亲爱的, 我是opencv的新手,我不知道为什么,当我尝试从RGBA转换为HLS时,没有任何变化。 更好的解释是,我以前使用的是3通道图像,所以我正在读取RGB并将其转换为HLS /其他... 现在,出于其他目的(我需要访问alpha通道),我正在阅读BGR-在RGBA中进行转换,然后通过cv :: Vec4b处理RGB通道。 但是,当转换为HLS时,我没有任何变化。这是我的功能,需要2个cv :: Mat输入,即“ src”和“ dst”,将它们转换为HLS,应用一些值,然后将其重新转换为RGBA,如下代码:
cvtColor(src, src, CV_RGBA2RGB);
cvtColor(src, src, CV_RGB2HLS);
cvtColor(dst, dst, CV_RGBA2RGB);
cvtColor(dst, dst, CV_RGB2HLS);
for(int i = 0; i < src.rows; i++)
for(int j = 0; j < src.cols; j++){
dst.at<cv::Vec3b>(i,j)[0] = cv::saturate_cast<uchar>(src.at<cv::Vec3b>(i,j)[0] + hue);
dst.at<cv::Vec3b>(i,j)[1] = cv::saturate_cast<uchar>(src.at<cv::Vec3b>(i,j)[1] + luminance);
dst.at<cv::Vec3b>(i,j)[2] = cv::saturate_cast<uchar>(src.at<cv::Vec3b>(i,j)[2] + saturation);
}
cvtColor(dst, dst, CV_HLS2RGB);
cvtColor(dst, dst, CV_RGB2RGBA);
cvtColor(src, src, CV_HLS2RGB);
cvtColor(src, src, CV_RGB2RGBA);
其中,色相,亮度,饱和度是一些整数值。 如前所述,仅使用RGB完全可以。 现在,通过使用RGBA,它什么都不会改变。
答案 0 :(得分:0)
通过创建一个新的Mat现在可以在RGBA中使用
False