Opencv + Visual Studio 2008 奇怪的调试问题

Posted

技术标签:

【中文标题】Opencv + Visual Studio 2008 奇怪的调试问题【英文标题】:Open CV + Visual Studio 2008 weird Debugging problem 【发布时间】:2009-11-19 21:06:37 【问题描述】:

我最近在 Visual Studio 2008 专业版下安装了 OpenCV2.0,构建了库、dll-s 并且一切正常,但是当我运行第一个示例程序时:

#include “highgui.h”
int main( int argc, char** argv ) 
IplImage* img = cvLoadImage( argv[1] );
cvNamedWindow( “Example1”, CV_WINDOW_AUTOSIZE );
cvShowImage( “Example1”, img );
cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow( “Example1” );

它直接进入调试模式,但有以下异常:Unhandled exception at 0x7855b9f0 in HelloOpenCV.exe: 0xC0000005: Access violation reading location 0x00000000.

它还切换到“loadsave.cpp”文件并指向该行:

return (IplImage*)cv::imread_(filename, iscolor, cv::LOAD_IMAGE );

在堆栈点:> highgui200.dll!cvLoadImage(const char * filename=0x00000000, int iscolor=1) Line 474 + 0x13 bytes C++

我还用Visual Studio调试窗口link text做了一个打印屏幕

我认为这与放错位置的依赖项、dll-s 的问题有关。 如果有人知道我可以做些什么来解决这个问题,请回答,我将永远感激不尽。

谢谢, 亚历克斯

【问题讨论】:

【参考方案1】:

您是否在命令行参数中为argv[1] 指定了一个有效文件,即要读取的图像的filename

【讨论】:

【参考方案2】:

您需要验证您是否有足够的命令行参数。您应该在 main() 的开头添加这样的内容:

if (argc < 2)

    fputs("Usage: prog filename\n", stderr);
    exit(1);

else if (argc > 2)

    fputs("ignoring extra parameters\n", stdout);

您还可以修改代码以依次使用每个命令行选项(如果您这样做,您会希望删除上面示例中有关额外参数的警告):

int arg;
for (arg = 1; arg < argc; ++arg)

    IplImage* img = cvLoadImage( argv[arg] );

    ... the rest of your code ...

最后,由于屏幕截图显示您正在调试器中启动可执行文件,因此您需要修改属性以添加命令行参数。在项目的属性中,您要选择“调试”选项卡,然后将文件添加到“命令参数”。

【讨论】:

【参考方案3】:

这不是一个直接的答案,但我会尝试在OpenCV Yahoo Group 上提问。它非常活跃,肯定会有人知道。每当我在那里提出问题时,都会在几个小时内得到答复。

【讨论】:

【参考方案4】:

我认为你的命令行参数不正确

确保命令行参数的有效性。

【讨论】:

【参考方案5】:

正如其他答案所表明的那样,程序在没有命令行参数的情况下运行。您应该执行R Samuel Klatchko said 的操作,以便您的程序在没有它们的情况下正常运行。

但除此之外,为了帮助您使用正确的参数进行调试,您可以在“调试”“选项卡”上的 VS 项目的属性页中指定要在调试器启动时传递给程序的命令行参数。这是“命令参数”设置。

【讨论】:

以上是关于Opencv + Visual Studio 2008 奇怪的调试问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cmake 为 Visual Studio 2015 构建 OpenCV 3.0.0 的 DLL

使用visual studio搭建opencv项目

Win7_64bits下Visual Studio2012中安装配置OpenCV

Visual Studio 2017+OpenCV-入门之环境搭建

visual studio 2019中C++安装opencv

Visual Studio 2010下的OpenCV 2.4.10安装过程