我最近在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的问题有关。 如果有人知道我可以做些什么来解决这个问题,请回答,我会永远感激。
谢谢, 亚历
答案 0 :(得分:3)
您是否在argv[1]
的命令行参数中指定了有效文件,即要读取的图片的filename
?
答案 1 :(得分:1)
您需要验证您是否有足够的命令行参数。你应该在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 ...
}
最后,由于屏幕截图显示您正在调试器中启动可执行文件,因此您需要修改属性以添加命令行参数。在项目的属性中,您需要选择“调试”选项卡,然后将该文件添加到“命令参数”。
答案 2 :(得分:0)
这不是一个直接的答案,但我会尝试询问OpenCV Yahoo Group。它非常活跃,有人肯定知道。任何时候我曾在那里问过一个问题,它会在几个小时后回复。
答案 3 :(得分:0)
我认为您的命令行参数不正确
确保命令行参数的有效性。
答案 4 :(得分:0)
正如其他答案所示,程序运行时没有命令行参数。你应该做R Samuel Klatchko said {{}}所以你的程序在没有它们的情况下正常工作。
但除此之外,为了帮助您使用正确的参数进行调试,您可以在“调试”选项卡上的VS项目的属性页中启动调试器时指定要传递给程序的命令行参数。这是“命令参数”设置。