美文网首页
图形图像处理算法(5)---- OpenCV 常用算法函数

图形图像处理算法(5)---- OpenCV 常用算法函数

作者: 特立独行的佩奇 | 来源:发表于2023-03-20 21:52 被阅读0次

    cvtColor 颜色空间转换函数

    cvtcolor()函数是一个颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间转换,也可以转换为灰度图

    // BGR2GRAY
    {
        cvtColor(mSrcMat, mOutPutMat, COLOR_BGR2GRAY);
        // 545*830 channel 1
        cout << "mOutPutMat GRAY rows:" << mOutPutMat.rows << " cols:" << mOutPutMat.cols << " channels: " << mOutPutMat.channels() << endl;
    }
    
    // BGR2RGBA 
    {
        cvtColor(mSrcMat, mOutPutMat, COLOR_BGR2BGRA);
        // 545*830 channel 4
        cout << "mOutPutMat BGRA rows:" << mOutPutMat.rows << " cols:" << mOutPutMat.cols << " channels: " << mOutPutMat.channels() << endl;
    
        vector<Mat> channels;
        split(mOutPutMat, channels);
        Mat alphaChannel = channels[3];
        imwrite("./channelsplit/testalphaChannel.bmp", alphaChannel);
    }
    
    // BGR2YUV
    {
        cvtColor(mSrcMat, mOutPutMat, COLOR_BGR2YUV);
        cout << "mOutPutMat YUV rows:" << mOutPutMat.rows << " cols:" << mOutPutMat.cols << " channels: " << mOutPutMat.channels() << endl;
        vector<Mat> channels;
        split(mOutPutMat, channels);
        Mat YChannel = channels[0];
        Mat UChannel = channels[1];
        Mat VChannel = channels[2];
        imwrite("./channelsplit/YChannel.bmp", YChannel);
        imwrite("./channelsplit/UChannel.bmp", UChannel);
        imwrite("./channelsplit/VChannel.bmp", VChannel);
    }
    

    cvtColor 支持的颜色转换分为下面几类:
    1、RGB和BGR(opencv默认的彩色图像的颜色空间是BGR)颜色空间的转换
    2、向RGB和BGR图像中增添alpha通道
    cv::COLOR_RGB2RGBA
    cv::COLOR_BGR2BGRA

    3、从RGB和BGR图像中去除alpha通道
    cv::COLOR_RGBA2RGB
    cv::COLOR_BGRA2BGR

    4、从RBG和BGR颜色空间转换到灰度空间
    5、从灰度空间转换到RGB和BGR颜色空间
    6、RGB和BGR颜色空间与BGR565颜色空间之间的转换
    cv::COLOR_RGB2BGR565
    cv::COLOR_BGR2BGR565
    cv::COLOR_BGR5652RGB
    cv::COLOR_BGR5652BGR
    cv::COLOR_RGBA2BGR565
    cv::COLOR_BGRA2BGR565
    cv::COLOR_BGR5652RGBA
    cv::COLOR_BGR5652BGRA

    7、灰度空间域BGR565之间的转换
    cv::COLOR_GRAY2BGR555
    cv::COLOR_BGR5552GRAY

    8、RGB和BGR颜色空间与CIE XYZ之间的转换
    cv::COLOR_RGB2XYZ
    cv::COLOR_BGR2XYZ
    cv::COLOR_XYZ2RGB
    cv::COLOR_XYZ2BGR

    9、RGB和BGR颜色空间与uma色度(YCrCb空间)之间的转换
    cv::COLOR_RGB2YCrCb
    cv::COLOR_BGR2YCrCb
    cv::COLOR_YCrCb2RGB
    cv::COLOR_YCrCb2BGR

    10、RGB和BGR颜色空间与HSV颜色空间之间的相互转换
    cv::COLOR_RGB2HSV
    cv::COLOR_BGR2HSV
    cv::COLOR_HSV2RGB
    cv::COLOR_HSV2BGR

    11、RGB和BGR颜色空间与HLS颜色空间之间的相互转换
    cv::COLOR_RGB2HLS
    cv::COLOR_BGR2HLS
    cv::COLOR_HLS2RGB
    cv::COLOR_HLS2BGR

    12、RGB和BGR颜色空间与CIE Lab颜色空间之间的相互转换
    cv::COLOR_RGB2Lab
    cv::COLOR_BGR2Lab
    cv::COLOR_Lab2RGB
    cv::COLOR_Lab2BGR

    13、RGB和BGR颜色空间与CIE Luv颜色空间之间的相互转换
    cv::COLOR_RGB2Luv
    cv::COLOR_BGR2Luv
    cv::COLOR_Luv2RGB
    cv::COLOR_Luv2BGR

    14、Bayer格式(raw data)向RGB或BGR颜色空间的转换
    cv::COLOR_BayerBG2RGB
    cv::COLOR_BayerGB2RGB
    cv::COLOR_BayerRG2RGB
    cv::COLOR_BayerGR2RGB
    cv::COLOR_BayerBG2BGR
    cv::COLOR_BayerGB2BGR
    cv::COLOR_BayerRG2BGR
    cv::COLOR_BayerGR2BGR

    插值缩放函数 resize

    resize 函数支持下面几种插值算法:
    INTER_NEAREST 最近邻插值
    INTER_LINEAR 双线性插值
    INTER_CUBIC 双三次插值
    INTER_LANCZOS4 兰索斯插值

    Mat dstMat;
    Size ms(300, 300);
    resize(mSrcMat, dstMat, ms, INTER_NEAREST);
    
    //imshow("dstMat", dstMat);
    
    resize(mSrcMat, dstMat, ms, INTER_LINEAR);
    resize(mSrcMat, dstMat, ms, INTER_CUBIC);
    

    计算加权和函数 addWeighted

    addWeighted函数的主要作用是将两张源Mat 类型以一定的权重进行混合,以满足日常生活中我们对于图片混合的需要
    double srcAlpha = (double)pos / alphaValueMax;
    double srcBeta = 1.0f - srcAlpha;

    addWeighted(mSrcAplhaMat, srcAlpha, mDstAplhaMat, srcBeta, 0.0f, mOutputMat);
    第一个参数,需要加权的第一个Mat 类型
    第二个参数,double 类型的 alpha,表示第一个数组的权重
    第三个参数,需要加权的第二个Mat,注意需要和第一个Mat 类型有相同的尺寸和通道数
    第四个参数,表示第二个Mat 类型的权重
    第五个参数,double 类型的gamma,一个加到权重和上的标量值
    第六个参数,输出的 Mat类型,它和输入的两个Mat 类型有相同的尺寸和通道数

    相关文章

      网友评论

          本文标题:图形图像处理算法(5)---- OpenCV 常用算法函数

          本文链接:https://www.haomeiwen.com/subject/tusprdtx.html