OpenCV cvLoadImage()不会在visual studio调试器中加载图像?

时间:2010-01-22 07:53:25

标签: c++ visual-studio-2008 opencv visual-studio-debugging

我正在尝试为OpenCV制定一个简单的hello世界,但是我已经没有想到它为什么不起作用了。

编译并运行此代码时:

#include <cv.h>
#include <highgui.h> 
int main(int argc, char* argv[])
{
 IplImage* img = cvLoadImage( "myjpeg.jpg" );
 cvNamedWindow( "MyJPG", CV_WINDOW_AUTOSIZE );
 cvShowImage("MyJPG", img);
 cvWaitKey(0);
 cvReleaseImage( &img );
 cvDestroyWindow( "MyJPG" );
 return 0;
}

我得到一个大约200x200的灰色框而不是指示的.jpg文件。如果我使用不同的jpg,我会得到相同类型的窗口,如果我输入一个无效的文件名,我会得到一个非常小的窗口(预期)。

我在Windows 7 Professional下使用Visual Studio 2008。

大多数示例程序似乎工作正常,所以我更加困惑的是,代码如何加载示例jpgs就好了,但在上面的代码中它不起作用(甚至尝试了样本jpeg)。

更新

通过编译生成的可执行文件工作正常,但是每当我尝试运行调试器时,Visual Studio 2008调试器都会将空指针加载到img中 - 无论文件位置是隐式还是显式。

4 个答案:

答案 0 :(得分:8)

myjpeg.jpg的路径似乎有问题,因为当您在调试器下运行时,当前目录可能会有所不同。

默认情况下,Visual Studio调试器使用的当前目录是包含.vcproj文件的目录,但您可以在项目属性中更改它(调试 - &gt;工作目录)。

您是否100%确定正确传递绝对路径?尝试将同一路径传递给fopen,看看它是否也返回NULL。如果是这样,则路径不正确。

如果您想确切地查看试图打开的库的文件,可以在myjpeg.jpg上使用Project Monitor和过滤器。

答案 1 :(得分:1)

您使用的是哪个版本的OpenCV?我已经尝试了最新的代码(OpenCV2.0),它运行正常。您可以从here下载OpenCV2.0。

如果您想要最新版本,可以通过here的SVN查看。

答案 2 :(得分:0)

尝试将HAVE_JPEG添加到预处理器定义中。

答案 3 :(得分:0)

我遇到了同样的问题。 Debug版本不加载图像,但是当我编译并将其链接为Release时,它可以工作。我希望这有帮助