第十一节 通道的分离与闭合



void QUickdemo::channels_demo(Mat& image)
{
    std::vector<Mat>mv;--vector是一种容器类型可以存储多个Mat类型的图片
    split(image, mv);--split将一个多通道的图像拆分成多个单通道的图像并将其存储在MV里面

//结果三个图片都为灰度图
    namedWindow("蓝色", WINDOW_FREERATIO);
    imshow("蓝色", mv[0]);
    namedWindow("绿色", WINDOW_FREERATIO);
    imshow("绿色", mv[1]);
    namedWindow("红色", WINDOW_FREERATIO);
    imshow("红色", mv[2]);
    Mat dst;

//将BGR中的G和R都设置为0
    //蓝色
    /*mv[1] = 0;
    mv[2] = 0; */
    //绿色
    /*mv[0] = 0;
    mv[2] = 0; */
    //红色
    mv[0] = 0;
    mv[1] = 0;
   merge(mv, dst);--merge用于将多个单通道图像合并成为一个多通道图像
    namedWindow("颜色", WINDOW_FREERATIO);
    imshow("颜色", dst);



通道混合


    int from_to[] = { 0,2,1,1,2,0 };-- int from_to[] = { 0,2,1,1,2,0 };定义了一个数组,表示通道的映射关系。这里可以理解为将源图像(image)的通道按照这个映射关系复制到目标图像(dst)中。具体来说,第一个数字表示源图像的通道索引,第二个数字表示目标图像的通道索引。所以这里表示将源图像的通道 0 复制到目标图像的通道 2,源图像的通道 1 复制到目标图像的通道 1,源图像的通道 2 复制到目标图像的通道 0。
    mixChannels(&image, 1, &dst, 1, from_to, 3);--mixChannels(&image, 1, &dst, 1, from_to, 3);函数调用中,第一个参数&image是源图像的指针,第二个参数1表示源图像的数量,第三个参数&dst是目标图像的指针,第四个参数1表示目标图像的数量,第五个参数from_to是通道映射关系数组,第六个参数3表示每个图像中的通道数
    namedWindow("通道混合", WINDOW_FREERATIO);
    imshow("通道混合", dst);//第一个参数可以多个图像混合
    
}

个人理解,如有问题,欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值