【问题标题】:OpenCV cvLoadImage() does not load images in visual studio debugger?OpenCV cvLoadImage() 不在 Visual Studio 调试器中加载图像?
【发布时间】: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


【解决方案1】:

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

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

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

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

【讨论】:

  • 完成了这项工作。 .jpg 位于带有可执行文件的调试目录中,而不是位于带有 vcproj 文件的项目目录中。我不知道为什么显式路径声明不起作用,我猜总有可能我没有正确传递显式路径。非常感谢大家!
  • @Catalin_lacob 我需要你的帮助。我试过你说的。 fopen 不返回 NULL,cvLoadImage 也不返回,bt cvShowImage 显示灰框......
  • 没关系,找到了,因为我没有waitkey和cvrelease,后来它不起作用,不知道为什么
【解决方案2】:

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

如果您想要最新版本,可以从here 使用 SVN 进行检查。

【讨论】:

  • 如果是这样,您应该考虑使用Mat 类和imread 函数 - 新的 C++ 接口要好得多 :)
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 2017-08-15
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多