OpenCV图像从RGB转换为灰度,使用imread提供较差的结果

前端之家收集整理的这篇文章主要介绍了OpenCV图像从RGB转换为灰度,使用imread提供较差的结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_1@我正在从PNG文件加载一个24位RGB图像到我的OpenCV应用程序.

然而,使用imread直接将图像加载为灰度级可使结果非常差.

Mat src1 = imread(inputImageFilename1.c_str(),0);

将RGB图像加载为RGB并将其转换为灰度可以获得更好的结果.

Mat src1 = imread(inputImageFilename1.c_str(),1);
cvtColor(src1,src1Gray,CV_RGB2GRAY);

我想知道我是否正确使用imread的图像类型.有没有人经历过类似的行为?

使用imread转换为灰度的图像如下所示:

使用cvtColor转换为灰度的图像如下所示:

解决方法

今天我有同样的问题.最后我比较了三种方法
//method 1
cv::Mat gs = cv::imread(filename,CV_LOAD_IMAGE_GRAYSCALE);

//method 2
cv::Mat color = cv::imread(filename,1); //loads color if it is available
cv::Mat gs_rgb(color.size(),CV_8UC1);
cv::cvtColor(color,gs_rgb,CV_RGB2GRAY);

//method 3
cv::Mat gs_bgr(color.size(),gs_bgr,CV_BGR2GRAY);

方法1(加载灰度)和3(CV_BGR2GRAY)产生相同的结果,而方法2产生不同的结果.对于我自己的目的,我已经开始使用CV_BGR2GRAY.

我的输入文件是jpg,所以可能会有与您的特定图像格式相关的问题.

猜你在找的CSS相关文章