如果出现的下图这种灰色显示,是因为程序没读到你的图片,原因有3种,分别如下:
1、图片不在你的debug文件夹里,图片需要放在工程目录下,和debug同目录,或者用绝对路径;
2、图片名字和引用时的图片名字不同;
3、图像的数据类型错误;
你现实的时候是不是传递错了指针,比如PIlImage*frame=cvloadImage(“Lena.jpg”,-1); 那么显示的时候ShowImage就要传递frame 当然如果你进行了灰度变换,那么输入变换后的图片指针!
也有可能是你的窗口命名出现了错误,我也曾出过这样的错误,而且编译器不报错
比如:cvNamedWindow("show_imge");
cvShowImage("show_image", lena);
cvWaitKey(0);
咋一看还看不出来,后来才发现是窗口名打错了,不明白为什么编译器不报错呢。
图片路径不对,可以把图片复制到你的工程文件里面再用命令行参数打开
之前运行如下程序也是只显示一片灰,运行结果是:"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不能运行我就不太清楚了。