core组件进阶 (Opencv3编程入门 第五章) 第三节 分离颜色通道,多通道图像混合
1.通道分类:split()函数
split函数将一个多通道数组分类为多个单通道数组。
void split(const Mat& src, Mat* mvbegin);
void split(Inputarray m, OutputArrayOfArrays mv);
第一个参数是要被分离的多通道数组,第二参数是函数的输出数组或者vector容器。
2.通道合并:merge()函数
split的逆操作
void merge(const Mat* mv, size_tcount, OutputArray dst);
/*
第一个参数是指向Mat类型数组的指针,第二个参数是输入矩阵的个数,
第三个参数是输出矩阵;
*/
void merge(InputArrayOfArrays mv, OutputArray dst);
/*
第一个参数是矩阵数组或者Vector容器,第二个参数是输出矩阵。
*/
遇到函数参数中的InputArray和OutputArray类型,简单地把它们当做Mat类型即可。
示例
vector<Mat> channels;
Mat imageBlueChannel;
Mat imageGreenChannel;
Mat imageRedChannel;
srcImage4 = imread("1.jpg");
split(srcImage4, channels);
imageBlueChannel = channels.at(0);
imageGreenChannel = channels.at(1);
imageRedChannel = channels.at(2);
注意at()返回的是引用,因此对imageBlueChannel进行修改会改变channels。