• opencvmixChannels通道复制


    方式一

    #include<opencv2/opencv.hpp>
    #include<iostream>
    #include  <vector>
    
    
    int main(int argc, char** argv) {
    
        cv::Mat src = cv::imread("D:/bb/tu/3.png");
        std::cerr << src.channels() << std::endl;
        cv::imshow("src", src);
    
        cv::Mat dst(src.rows, src.cols, CV_8UC3);
        std::vector<int> fromTo = { 0,2,1,1,2,0 };//通道对应信息
        //src的0通道复制到dst的2通道,src的1通道复制到dst的1通道,src的2通道复制到dst的0通道
        cv::mixChannels(src, dst, fromTo);//通道复制
    
        cv::imshow("dst", dst);
    
        cv::waitKey(0);
        return 0;
    }

    方式二

    #include<opencv2/opencv.hpp>
    #include<iostream>
    #include  <vector>
    
    
    int main(int argc, char** argv) {
    
        //把一个四通道矩阵,使用mixChannels()函数分割成了一个三通道矩阵和一个单通道矩阵,并且具有对应关系
        cv::Mat bgra(5, 4, CV_8UC4, cv::Scalar(10, 20, 30, 255));
        cv::Mat bgr(bgra.rows, bgra.cols, CV_8UC3);
        cv::Mat alpha(bgra.rows, bgra.cols, CV_8UC1);
    
        cv::Mat out[] = { bgr,alpha }; //通道组合
        int fromTo[] = { 0, 2, 1, 1, 2, 0, 3, 3 };//通道对应信息,从0开始
        cv::mixChannels(&bgra, 1, out, 2, fromTo, 4); //通道复制
        /*
        第一个参数:输入矩阵   const Mat *
        第二个参数:输入矩阵的数量   size_t
        第三个参数:输出矩阵   Mat *
        第四个参数:输出矩阵的数量   size_t
        第五个参数:通道对应信息    const int * 
        第六个参数:复制通道数量
        说明:在这个函数原型中,如果输入矩阵和输出矩阵都写1,那么就跟第一种函数原型是一致的了。
        如果不为1,就可以实现多个矩阵组合并或者一个矩阵拆分为多个复杂矩阵等功能
        */
        
        std::cerr << bgra << std::endl<< std::endl;
        std::cerr << bgr << std::endl << std::endl;
        std::cerr << alpha << std::endl << std::endl;
    
    
        cv::waitKey(0);
        return 0;
    }

  • 相关阅读:
    Oracle.EntityFrameworkCore使用时报错:Specified cast is not valid
    .net core webapi通过中间件获取请求和响应内容
    金额数字语音播报
    FluentData微型ORM
    记阿里巴巴数据采集
    给定一个N阶矩阵A,输出A的M次幂(M是非负整数)(Java)
    求出区间[a,b]中所有整数的质因数分解。(Java)(转载)
    最大公约数 最小公倍数(Java)
    十六进制转八进制(Java)
    杨辉三角形(java)
  • 原文地址:https://www.cnblogs.com/liming19680104/p/15609565.html
Copyright © 2020-2023  润新知