Android 는 opencv 를 바탕 으로 다 중 채널 분리 와 합병 을 실현 합 니 다.

다 중 채널 분리
API

public static void split(Mat m, List<Mat> mv)
  • 매개 변수 1:m,분 리 될 다 중 채널 이미지
  • 인자 2:mv,분 리 된 단일 채널 이미지
    조작 하 다.
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        mBinding = DataBindingUtil.setContentView(this, R.layout.activity_channel_split_merge)
        mBgr = Utils.loadResource(this, R.drawable.test)
        val imgList = mutableListOf<Mat>()
        Core.split(mBgr, imgList)
        mChannelB = imgList[0]
        mChannelG = imgList[1]
        mChannelR = imgList[2]
    }
    채널 통합
    API
    
    public static void merge(List<Mat> mv, Mat dst)
    4.567917.매개 변수 1:뮤 직 비디오,합 쳐 야 할 이미지 배열,그 중에서 모든 이미지 가 똑 같은 사이즈 와 데이터 형식 을 가 져 야 합 니 다4.567917.매개 변수 2:dst,합병 후 출력 한 이미지,mv[0]와 같은 사이즈 와 데이터 형식 을 가지 고 있 으 며,채널 수 는 모든 입력 이미지 의 채널 수 총화 와 같 습 니 다.
    조작 하 다.
    
    private fun showBGZero() {
        val zero = Mat.zeros(mBgr.rows(), mBgr.cols(), CvType.CV_8UC1)
        val list = mutableListOf<Mat>()
        list.add(zero)
        list.add(zero)
        list.add(mChannelR)
        val result = Mat()
        Core.merge(list, result)
        showMat(result)
        result.release()
    }
    
    private fun showBRZero() {
        val zero = Mat.zeros(mBgr.rows(), mBgr.cols(), CvType.CV_8UC1)
        val list = mutableListOf<Mat>()
        list.add(zero)
        list.add(mChannelG)
        list.add(zero)
        val result = Mat()
        Core.merge(list, result)
        showMat(result)
        result.release()
    }
    
    private fun showGRZero() {
        val zero = Mat.zeros(mBgr.rows(), mBgr.cols(), CvType.CV_8UC1)
        val list = mutableListOf<Mat>()
        list.add(mChannelB)
        list.add(zero)
        list.add(zero)
        val result = Mat()
        Core.merge(list, result)
        showMat(result)
        result.release()
    }
    
    private fun showSwitchBR() {
        val zero = Mat.zeros(mBgr.rows(), mBgr.cols(), CvType.CV_8UC1)
        val list = mutableListOf<Mat>()
        list.add(mChannelR)
        list.add(mChannelG)
        list.add(mChannelB)
        val result = Mat()
        Core.merge(list, result)
        showMat(result)
        result.release()
    }
    결실

    소스 코드
    github.com/onlyloveyd/…
    이상 은 안 드 로 이 드 가 opencv 를 바탕 으로 다 중 채널 분리 와 합병 을 실현 하 는 상세 한 내용 입 니 다.안 드 로 이 드 opencv 가 다 중 채널 분리 와 합병 을 실현 하 는 데 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 시기 바 랍 니 다!

    좋은 웹페이지 즐겨찾기