2013-08-31 56 views
0

细使用Visual Studio 2010,OpenCV的2.2.2,Windows 7的64倍的OpenCV建行,调试抛出错误,从运行.exe文件

我的代码成功生成那么当它进入调试我得到以下错误:

First-chance exception at 0x75f0c41f in MachineVisionHW0.exe: Microsoft C++ exception: cv::Exception at memory location 0x002dec90.. 
Unhandled exception at 0x75f0c41f in MachineVisionHW0.exe: Microsoft C++ exception: cv::Exception at memory location 0x002dec90.. 

然后我结束调试,转到文件目录并运行构建的可执行文件,它运行良好。有人知道如何解决这个问题吗?这并不妨碍我构建我的代码,但这非常不方便。我将在下面的代码中加入一个例子。

int main(){ 
    cv::Mat image1 = cv::imread("img1.JPG", CV_LOAD_IMAGE_GRAYSCALE); 

    cv::namedWindow("Sample1"); 
    cv::imshow("Sample1", image1); 
    cv::waitKey(0); 

    return 1; 
} 
+0

@ChrisO这是我多年来第一次使用c或C++,而且当我在过去时,我甚至不知道我是否学过try/catch。在网上查看时,看起来你通过了一个争论,意味着你知道这个问题。我不知道问题是什么。 –

回答

2

你主之前得到未处理的异常

如果没有,那么你的代码以某种方式做某事来引发异常。在第一行放置一个断点,然后按F5,然后在断点处,一次一行地查看代码,查看哪一个导致异常,F10键执行此操作。

我的直觉是,当从调试器运行时,cv::imread失败,因为它没有从预期位置找到img1.jpg,当前工作目录是解决方案文件的目录,而不是调试输出版本DIR。你可以做一个快速测试,将img1.jpg复制到包含sln文件的目录中,看看是否能解决问题。

+0

而不是复制'img1.jpg',你可以提供绝对路径。 – cyriel

+0

@cyriel您当然可以这样做,但使用绝对路径可能会导致部署方案出现问题。 –

+0

当然,你是对的。我建议它只是为了测试,而不是最终的解决方案。 – cyriel