2012-08-14 843 views
2

我是OpenCV的新手,想问一个关于加载图像的基本问题。OpenCV - cvLoadImage()无法加载JPG图像

我在windows7上使用OpenCV2.0和Visual Studio 2008。

从我读和理解有“cvLoadImage()”函数加载OpenCV中的图像。

我目前尝试非常基本的程序来加载和显示窗口中的图片。

这是我的代码:

#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

尝试'“C:\\ hello.jpg”' – Sam 2012-08-14 14:01:24

+0

我已经试过这种情况,但仍然无法正常工作.. 但是,如果我使用其他类型的文件,如PNG,一切工作正常.. – jwiil 2012-08-14 16:20:28

+0

你应该给我们一些我们可以理解的情况。例如,您可能会给我们正在处理的jpg图像。我认为你的jpg图像可能有问题。你是否尝试过不同来源的不同jpgs?另一件事是难以安装opencv的可能性很小。 – 2012-08-14 19:08:22

回答

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; 
} 
+0

Thx为answ,我已经尝试过您的解决方案,但没有为JPG类型文件工作,但为其他类型(如PNG)工作。 即使我尝试了一些其他组合,如“C:/hello.jpg”或将“hello.jpg”放在我的工作项目目录中,然后直接调用。但仍然没有工作。 – jwiil 2012-08-14 16:00:21

+1

如果你能够加载其他格式然后JPG格式,然后你想要打开的图像不是一个好的副本,或者你的opencv二进制文件有问题。尝试在您想要使用它的系统上从源代码重新编译opencv。 – masad 2012-08-14 19:14:23

+0

并且还使用最新的opencv版本,因为以前版本中的大多数bug在新版本中得到修复 – masad 2012-08-14 19:16:08