C++ opencv之 通道分离与合并(split,merge,mixChannels)

本文介绍了OpenCV中用于处理三通道图像的split、merge和mixChannels函数。通过实例展示了如何进行通道分离、合并以及混合,并解释了在imshow中显示单通道图像为何呈现灰度效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇博客我们来学习opencv的通道分离与合并(split,merge)两个函数:

一、知识点

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

- split // 通道分类
- merge // 通道合并
- mixChannels  //

扩展:
在很多CNN的卷积神经网络中输入的图像一般会要求[h, w, ch]其中h是高度、w是指宽度、ch是指通道数数目、OpenCV DNN模块中关于图像分类的googlenet模型输入[224,224,3]表示的就是224x224大小的三通道的彩色图像输入。
我们来看一个描绘了一个一般的RGB图像在opencv的Mat中像素数据存储结构以及通道分离/合并操作关系的图:

在这里插入图片描述
是不是描述的很明了呢。

二、函数原型

1、split

void split(InputArray m, OutputArrayOfArrays mv)
//split(待分离的Mat型多通道矩阵(二维),填分离后的Mat型单通道数组(三维)或一个vector<Mat>对象);
//split(image, mv);          //(输入图片,mat对象)

2、merge

void merge(InputArrayOfArrays mv, OutputArray dst)
//merge(对象名channels,通道合并后的矩阵)
//merge(mv, dst);            //(这块为mat对象,输出图片);

3、mixChannels

mixChannels(输入矩阵(可以1个,可以多个),矩阵个数,输出矩阵,矩阵个数,矩阵对应规则,fromTo的数组元素个数除以2)</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值