我正在尝试为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中 - 无论文件位置是隐式还是显式。
答案 0 :(得分:8)
myjpeg.jpg
的路径似乎有问题,因为当您在调试器下运行时,当前目录可能会有所不同。
默认情况下,Visual Studio调试器使用的当前目录是包含.vcproj
文件的目录,但您可以在项目属性中更改它(调试 - &gt;工作目录)。
您是否100%确定正确传递绝对路径?尝试将同一路径传递给fopen
,看看它是否也返回NULL
。如果是这样,则路径不正确。
如果您想确切地查看试图打开的库的文件,可以在myjpeg.jpg
上使用Project Monitor和过滤器。
答案 1 :(得分:1)
答案 2 :(得分:0)
尝试将HAVE_JPEG
添加到预处理器定义中。
答案 3 :(得分:0)
我遇到了同样的问题。 Debug版本不加载图像,但是当我编译并将其链接为Release时,它可以工作。我希望这有帮助