为什么OpenCV显示的图像总是灰色

2025-03-20 16:02:36
推荐回答(5个)
回答1:

  如果出现的下图这种灰色显示,是因为程序没读到你的图片,原因有3种,分别如下:

  1、图片不在你的debug文件夹里,图片需要放在工程目录下,和debug同目录,或者用绝对路径;

  2、图片名字和引用时的图片名字不同;

  3、图像的数据类型错误;

回答2:

你现实的时候是不是传递错了指针,比如PIlImage*frame=cvloadImage(“Lena.jpg”,-1); 那么显示的时候ShowImage就要传递frame 当然如果你进行了灰度变换,那么输入变换后的图片指针!

回答3:

也有可能是你的窗口命名出现了错误,我也曾出过这样的错误,而且编译器不报错
比如:cvNamedWindow("show_imge");
cvShowImage("show_image", lena);

cvWaitKey(0);
咋一看还看不出来,后来才发现是窗口名打错了,不明白为什么编译器不报错呢。

回答4:

图片路径不对,可以把图片复制到你的工程文件里面再用命令行参数打开

回答5:

之前运行如下程序也是只显示一片灰,运行结果是:"Could not load image file:AA.JPEG"

#include

int main(int argc, char *argv[])
{
IplImage* img=0;
img=cvLoadImage("AA.JPEG", -1);
if(!img)
printf("Could not load image file: %s\n","AA.JPEG");
cvNamedWindow("win1", 0);
cvShowImage("win1",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("win1");
return 0;
}
/*AA.JEPG是照片自己显示的名字,我把它放到了\VC6.0\MSDev98\MyProjects\**(自己命名的工程名)里了。*/
后来我把img=cvLoadImage("AA.JPEG", -1);中的JPEG改成了JPG就可以运行了,看来有时候读图不成功还有可能跟自己写的图片格式OpenCV能不能识别有关系。至于为什么照片写JPEG不能运行我就不太清楚了。