split() 通道分离,把多通道转换成多个单通道即灰度状态(注意理解)
merge() 通道合并
mixChannels() 多通道混合
split分离
std::vector<Mat> mv; //容器类型mat
split(image, mv); //通道分离bgr
imshow("蓝色", mv[0]);
imshow("绿色", mv[1]);
imshow("红色", mv[2]);
imshow("原图", image);
注意图片是BGR格式
merge合并
Mat dst;
merge(mv, dst);
imshow("合并各通道", dst);
展示 单通道有色图片
因为单通道是不展示颜色的所以可以强行把多通道的其他两个通道进行置零然后融合
(255,255,255)---> (255,0,0)
就只有蓝色B通道具有数据
mv[1] = 0;
mv[2] = 0;
merge(mv, dst);
imshow("合并各通道", dst);
mixChannels 通道混合(交换)
其中,索引对from_to[] = { 0, 2, 1, 1, 2, 0, }的含义为:
bgra的0通道复制到out[]的2通道,即bgr的0通道;
bgra的1通道复制到out[]的1通道,即bgr的1通道;
bgra的2通道复制到out[]的0通道,即bgr的2通道;
如图所示:
如果是hsv格式同理,详情可以参考这位博主的博文 详解:4通道图像分割、HSV通道获取
mixChannels(原图,张数,输出图,图的数量,交换方式,变换对数)
原图总通道数=输出图总通道数
如上面例子: 4=3+1
int from_to[] = {1,0,0,2};
mixChannels(&image, 1, &dst, 1, from_to, 2);
imshow("通道混合", dst);