通道分离
split原型
void split(const Mat& src, Mat* mvbegin);
void split(InputArray m, OutputArrayOfArrays mv);
第一个参数为要分离的多通道图,第二个参数为分离出来的通道数组或者vector容器
通道融合
merge原型
// mv 可以是 Mat 类型数组
void merge(const Mat* mv, size_t count, OutputArray dst);
void merge(InputArrayOfArrays mv, OutputArray dst);
第一个参数需要被合并的输入矩阵或者vectire容器阵列,mv参数中所有矩阵有着一样的尺寸和深度
第二参数 count 为mv为一个空白的C数组时,代表输入矩阵的个数,count>1
第三个参数 dst 输出矩阵 和 mv[0] 有一样的尺寸和深度,并且通道数是矩阵阵列中的通道总数。
下例为 将logo图 通道拆分 ,然后合并
int main()
{
Mat logo = imread("images/logo.jpg" );
Mat r, g, b;
vector<Mat> channels;
split(logo, channels);
b = channels.at(0);
g = channels.at(1);
r = channels.at(2);
imshow("r" , r);
imshow("g" , g);
imshow("b" , b);
Mat mergeMat;
merge(channels, mergeMat);
imshow("bgr", mergeMat);
waitKey(0);
return 0;
}