如何在不使用拆分的情况下从多通道矩阵中提取单个通道矩阵

时间:2019-01-26 20:00:13

标签: opencv

我将从多通道矩阵中提取一个通道。假设Mat img是一个三通道矩阵,我想提取第一个通道。有没有方便的函数可以执行此操作,例如:MATLAB中的out = img(:,:,1)。我知道cv::split可以通过拆分各个渠道来做到这一点。但是我想要另一种方法,因为我不会使用许多其他提取的通道。

1 个答案:

答案 0 :(得分:4)

OpenCV中有一个用于此的功能,令我惊讶的是:cv::extractChannel()。来自the docs

C ++签名:

void cv::extractChannel ( InputArray   src,
                          OutputArray  dst,
                          int          coi 
                        )

Python签名:

dst = cv.extractChannel( src, coi[, dst] )

说明:

  

从src提取单个通道(coi是从0开始的索引)

     

参数
  * src输入数组
  * dst输出数组
  * coi要提取的频道索引