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 类型有相同的尺寸和通道数
网友评论