我正在从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,所以可能会有与您的特定图像格式相关的问题.
原文地址:https://www.jb51.cc/css/217097.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。