opencv 分离颜色通道split和多通道图像融合merge

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangpengzp/article/details/87726632

通道分离

split原型

void split(const Mat& src, Mat* mvbegin);
void split(InputArray m, OutputArrayOfArrays mv);

第一个参数为要分离的多通道图,第二个参数为分离出来的通道数组或者vector容器

通道融合

merge原型

// mv 可以是 Mat 类型数组
void merge(const Mat* mv, size_t count, OutputArray dst);
void merge(InputArrayOfArrays mv, OutputArray dst);

第一个参数需要被合并的输入矩阵或者vectire容器阵列,mv参数中所有矩阵有着一样的尺寸和深度

第二参数 count 为mv为一个空白的C数组时,代表输入矩阵的个数,count>1

第三个参数 dst 输出矩阵 和 mv[0] 有一样的尺寸和深度,并且通道数是矩阵阵列中的通道总数。

下例为 将logo图 通道拆分 ,然后合并

int main()
{

	Mat logo = imread("images/logo.jpg" );
	
	Mat r, g, b;
	vector<Mat> channels;

	split(logo, channels);
	b = channels.at(0);
	g = channels.at(1);
	r = channels.at(2);
	imshow("r" , r);
	imshow("g" , g);
	imshow("b" , b);

	Mat mergeMat;
	merge(channels, mergeMat);
	imshow("bgr", mergeMat);
	waitKey(0);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/zhangpengzp/article/details/87726632