Opencv4.0学习记录(Day11 通道分离和合并)

图像通道操作

   函数1:split(const Mat& src,Mat *mvbegin)

         第一个参数:为要进行分离的图像矩阵,是一幅多通道的图像;

         第二个参数:可以是Mat数组的首地址,或者是容器vector<Mat>对象;

   作用:将图像拆分成单个通道

   函数2:void merge(const Mat* mv,size_t count,outputarray dst);

               void merge(const vector<Mat>& mv,outputArray dst);

   作用:可以将多个单通道合成一幅多通道的图像。

   函数3 :mixchaneels(const Mat* src,int nsrc,Mat* dst,int ndst,const int* fromTo,size_t npairs);

其中参数

参数1:输入图像

参数2:输入图像的个数

参数3:输出图像

参数4:输出图像的个数

参数5:输入通道指向那个输出通道(配对)int from_to[] = { 0,2,1,1,2,0 }; //输入通道顺序和输出通道顺序(配对)

参数6:输出通道的个数

为什么图像都是灰色的?不是红绿蓝

因为分离后为单通道,相当于分离通道的同时把其他两个通道填充相同的数值

比如绿色通道,分离出红色通道的同时,绿色和蓝色被填充为和红色相同的数值,

这样只有黑白灰。

void QuickDemo::channels_demo(Mat &image) {
	vector<Mat>mv;
	split(image, mv);//通道分离
	imshow("蓝色", mv[0]);
	imshow("绿色", mv[1]);
	imshow("红色", mv[2]);
	Mat dst;
	mv[0] = 0;
	mv[1] = 0;
	merge(mv,dst);//通道合并
	
	int from_to[] = {0,2,1,1,2,0};

	mixChannels(&image,1,&dst,1,from_to,3);//图像融合
	imshow("合并", dst);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值