【发布时间】:2011-01-08 02:51:09
【问题描述】:
我正在尝试为 OpenCV 设计一个简单的 hello world,但我对它为什么不起作用的想法已经不多了。
当我编译并运行这段代码时:
#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。
大多数示例程序似乎都可以正常工作,所以我很困惑该代码如何加载示例 jpg,但在上面的代码中它不起作用(甚至尝试了示例 jpeg)。
更新
编译生成的可执行文件工作正常,但是每次我尝试运行调试器时,Visual Studio 2008 调试器都会将空指针加载到 img 中 - 无论文件位置是隐式还是显式。
【问题讨论】:
-
你在什么平台上编译程序?您能否检查图像是否实际加载 if(img == NULL) { std::cout
-
更多测试表明可执行文件在 Visual Studio 环境之外工作正常,前提是 OpenCV .dll 文件存在于同一目录中,但实际上,在运行时调用 cvLoadImage() 后,img 是一个空指针调试环境。
-
问题可能是你的程序没有在图像文件所在的同一目录中执行。(这是你使用相对路径时的问题)
-
这似乎是与调试器有关的问题。我用显式路径替换了相对路径,但在 cvLoadImage() 之后,img 变量仍然返回一个空指针,但是当独立运行(本地有适当的文件)时,可执行文件可以正确运行(显示图像)。
-
您使用的是哪个版本的 OpenCV?
标签: c++ visual-studio-2008 opencv visual-studio-debugging