我是OpenCV的新手,想问一个关于加载图片的基本问题。
我在windows7上使用OpenCV2.0和Visual Studio 2008。
根据我的阅读和理解,有“cvLoadImage()”函数在OpenCV中加载图像。
我目前正在尝试非常基本的程序加载并在Windows中显示图片。
这是我的代码:
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage* img = cvLoadImage("C:/hello.jpg");
if (!img)
printf("Image can NOT Load!!!\n");
cvNamedWindow("myfirstwindow");
cvShowImage("myfirstwindow", img);
cvWaitKey(0);
cvReleaseImage(&img);
return 0;
}
结果是我可以得到灰色的窗口,但图像没有显示。 我尝试过其他解决方案,例如将图像放在项目文件夹中然后调用它,但仍然有相同的结果。
然而,当我尝试使用其他类型的图像,例如.png时,它已成功加载。
以前是否有人遇到过同样的问题或知道解决此问题的任何解决方案?
谢谢,
-jwiil -
答案 0 :(得分:1)
这是因为你给你的程序提供的路径实际上并没有指向任何东西。
如果您要将图像放在同一文件夹中,则需要调用
cvLoadImage("hello.jpg");
如果图像在其他任何地方,那么@vasile评论你需要调用
cvLoadImage("C:\\hello.jpg");
此外,我已编辑了您的代码,以便在图像未正确加载时退出
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage* img = cvLoadImage("C:/hello.jpg");
if (!img)
{
printf("Image can NOT Load!!!\n");
return 1;
}
cvNamedWindow("myfirstwindow");
cvShowImage("myfirstwindow", img);
cvWaitKey(0);
cvReleaseImage(&img);
return 0;
}