美文网首页
图形图像处理算法(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