【发布时间】:2011-11-19 15:18:10
【问题描述】:
我正在将 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 转换为灰度的图像如下所示:
【问题讨论】:
-
OpenCV 中的“Color”图像表示 BGR。所以你的代码的第二个版本不正确。它应该使用
CV_BGR2GRAY进行颜色转换。 -
感谢您的评论。我尝试使用 CV_BGR2GRAY 而不是 CV_RGB2GRAY 将图像转换为灰度,但得到了相同的结果。
-
你能附上你的原始图片吗?
-
很遗憾,以我目前的声誉,我无法将图像发布到我的帖子中。此外,我的声誉帖子中的超链接限制为 2 个。
-
感谢您的提示。原图位于:picasaweb.google.com/lh/photo/…
标签: opencv