2013-08-31 71 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