第5章 Core组件进阶
5.3 分离&合并颜色通道
5.3.1 通道分离:split()函数
1.作用:将一个多通道数组分离成几个单通道数组,公式:
2.原型:(1)void split(const Mat& src,Mat* mvbegin); (2)void split(InputArray m,OutputArrayOfArrays mv);
3.参数说明:
(1)需要分离的多通道数组(数组类型或const Mat&类型)
(2)函数的输出数组或输出的vector容器
4.示例:把一个3通道图像转换成3个单通道图像
Mat srcImage = imread("Love.jpg");vector<Mat> channels;Mat imageBlueChannel;Mat imageGreenChannel;Mat imageRedChannel;//分离彩色通道split(srcImage, channels);imageBlueChannel = channels.at(0);imageGreenChannel = channels.at(1);imageRedChannel = channels.at(2);//显示namedWindow("分离蓝色");imshow("分离蓝色", imageBlueChannel);namedWindow("分离绿色");imshow("分离绿色", imageGreenChannel);namedWindow("分离红色");imshow("分离红色", imageRedChannel);
5.3.2 通道合并:merge()函数
1.作用:将多个数组合并成一个多通道数组
2.原型:
(1)void merge(const Mat* mv,size_tcount,OutputArray dst);
(2)void marge(InputArrayOfArrays mv,OutputArray dst);
3.参数说明:
(1)需要被合并的输入阵列或vector容器阵列(mv参数中所有矩阵必须有一样的尺寸和深度)
(2)当mv为空白的C数组时代表输入矩阵的个数
(3)输出矩阵
4.示例:
//合并彩色通道merge(channels, srcImage);namedWindow("合并彩色通道图");imshow("合并彩色通道图", srcImage);