通道分离与合并
把不同的通道给分离,归并,使得能显现出来不同的通道颜色。
通道混合
void mixChannels(const Mat* src,int nsrc,Mat* dst ,int ndst,const int* fromTo,size_t npairs)函数
参数1:输入矩阵,可以为一个也可以为多个,但是矩阵必须有相同的大小和深度。
参数2:输入矩阵的个数。
参数3:输出矩阵,可以为一个也可以为多个,但是所有的矩阵必须事先分配空间(如用create),大小和深度须与输入矩阵等同。
参数4:输出矩阵的个数。
参数5:设置输入矩阵的通道对应输出矩阵的通道
参数6:通道数
完整代码
void QuickDemo::channels_demo(Mat &image)
{
std::vector<Mat>mv;
split(image, mv);
//imshow("蓝色", mv[0]);
//0,1,2三个通道分别代表BGR。
//关闭2个通道意味着开启一个通道。
//imshow("绿色", mv[1]);
//imshow("红色", mv[2]);
Mat dst;
mv[0] = 0;
mv[2] = 0;
merge(mv, dst);
imshow("蓝色", dst);
int from_to[] = { 0,2,1,1,2,0 };
//把通道相互交换,第0->第2,第一->第一,第二->第0
mixChannels(&image,1,&dst,1,from_to,3);//3表示3个通道
//参数1指针引用图像->参数2引用到dst
imshow("通道混合", dst);
}