C++Opencv通道的分离、合并和混合

Opencv通道的分离、合并和混合

OpenCV中默认imread函数加载图像文件,加载进来的是三通道彩色图像,色彩空间是RGB色彩空间、通道顺序是BGR(蓝色、绿色、红色)、对于三通道的图像OpenCV中提供了两个API函数用以实现通道分离与合并。

1.通道分离

API: split(待分离的Mat型多通道矩阵(二维),填分离后的Mat型单通道数组(三维)或一个vector对象);

void split(InputArray m, OutputArrayOfArrays mv)

参数解释:
image 输入图片
mv 输出mat对象

	std::vector<Mat> mv;
	split(image, mv);   //通道分离  split函数用于将一个多通道数组分离成几个单通道数组。
	imshow("蓝色", mv[0]);
	imshow("绿色", mv[1]);
	imshow("红色", mv[2]);

在这里插入图片描述

2.通道合并

API: split(待分离的Mat型多通道矩阵(二维),填分离后的Mat型单通道数组(三维)或一个vector对象);

void merge(InputArrayOfArrays mv, OutputArray dst)

参数解释:
mv 输入图片
dst 输出mat对象

	Mat dst;
	mv[0] = 0;  //将蓝色通道变为0
	merge(mv, dst);    //通道合并
	imshow("红色合并", dst);

在这里插入图片描述

3.通道混合

API: mixChannels(输入矩阵(可以1个,可以多个),矩阵个数,输出矩阵,矩阵个数,矩阵对应规则,fromTo的数组元素个数除以2),输入的矩阵(或矩阵数组)的某些通道拆分复制给对应的输出矩阵(或矩阵数组)的某些通道中,其中的对应关系就由fromTo参数制定

mixChannels(&image, 1, &dst, 1, from_to,3);

参数解释:
image 输入图片
1 输入对象的数量
dst 输出mat对象
1 输出对象的数量
fromTo 通道的对应关系
3 通道的数量

	int from_to[] = { 0,2,1,1,2,0 };  // 0通道换到2通道  1通道换到1通道 2通道换到0通道
	mixChannels(&image, 1, &dst, 1, from_to, 3);
	imshow("通道混合",dst);

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值