这篇博客我们来学习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)</