Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 如何在不使用拆分的情况下从多通道矩阵中提取单通道矩阵_Opencv - Fatal编程技术网

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

Opencv 如何在不使用拆分的情况下从多通道矩阵中提取单通道矩阵,opencv,Opencv,我将从多通道矩阵中提取一个通道。假设matimg是一个三通道矩阵,我想提取第一个通道。是否有任何方便的函数可以执行此操作,例如:MATLAB中的:out=img(:,:,1)。我知道,cv::split可以通过分割各个频道来实现这一点。但是我想要另一种方法,因为我不会使用许多其他提取的通道 OpenCV中有一个函数用于此,有点让我吃惊:cv::extractChannel()。发件人: C++签名: void cv::extractChannel ( InputArray src,

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

OpenCV中有一个函数用于此,有点让我吃惊:
cv::extractChannel()
。发件人:

C++签名:

void cv::extractChannel ( InputArray   src,
                          OutputArray  dst,
                          int          coi 
                        )
dst = cv.extractChannel( src, coi[, dst] )
Python签名:

void cv::extractChannel ( InputArray   src,
                          OutputArray  dst,
                          int          coi 
                        )
dst = cv.extractChannel( src, coi[, dst] )
说明:

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

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


OpenCV中有一个函数可以实现这一点,有点让我吃惊:
cv::extractChannel()
。发件人:

C++签名:

void cv::extractChannel ( InputArray   src,
                          OutputArray  dst,
                          int          coi 
                        )
dst = cv.extractChannel( src, coi[, dst] )
Python签名:

void cv::extractChannel ( InputArray   src,
                          OutputArray  dst,
                          int          coi 
                        )
dst = cv.extractChannel( src, coi[, dst] )
说明:

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

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


matlab针对这种矩阵优化。在C++中,你只限于如何在内存中排列图像。如果您唯一的问题是不使用其他频道,那么cv::split就不是真正的问题。忽略不需要的输出。如果你只想使用更少的代码(更简单的编程),你可以编写一个hrlper函数,使用split,但只返回想要的通道。matlab针对这种矩阵优化。在C++中,你只限于如何在内存中排列图像。如果您唯一的问题是不使用其他频道,那么cv::split就不是真正的问题。忽略不需要的输出。如果你只想使用更少的代码(更简单的编程),你可以编写一个hrlper函数,使用split,但只返回想要的通道。