2012-10-14 89 views
3

我有這個討厭的問題與opencv 2.4.2。 我使用VS 2012來編譯這個簡短的測試程序。OpenCV 2.4.2 imshow導致崩潰

#include <cv.h> 
#include <cxcore.h> 
#include <highgui.h> 

using namespace cv; 

int main() 
{ 
    Mat sudoku = imread("sudoku.jpg",0); 
    namedWindow("Lines", CV_WINDOW_AUTOSIZE); 

    imshow("Lines", sudoku); 

} 

Imshow是問題所在。當我刪除它時,它運行沒有任何問題。我在這裏發現了一個提示使用調試庫的提示,但它沒有幫助。

+0

,你能否告訴我們錯誤? – ArtemStorozhuk

+0

imshow崩潰的經典原因是1)圖像加載不正確,2)opencv沒有GUI支持(GTK或Qt)。寫下你的錯誤信息將有助於... – remi

回答

7

首先,你必須檢查圖像是否正確加載。要做到這一點,只需檢查image.data是否爲NULL

其次,調用imshow後,你必須調用waitKey顯示圖像: http://opencv.willowgarage.com/documentation/cpp/user_interface.html#cv-waitkey

這裏是整個代碼:

#include <opencv2/opencv.hpp> 
#include <iostream> 

using namespace std; 
using namespace cv; 

int main() 
{ 
    Mat sudoku = imread("sudoku.jpg",0); 

    if (sudoku.data == NULL) 
    { 
     cout << "No image found! Check path." << endl; 
     return 1;//ERROR 
    } 
    else 
    { 
     namedWindow("Lines", CV_WINDOW_AUTOSIZE); 
     imshow("Lines", sudoku); 
     waitKey();//without this image won't be shown 
     return 0;//OK 
    } 

} 
+0

愚蠢的我。我把圖片放在錯誤的文件夾。所以你是對的,它沒有正確加載。謝謝。 – NsJn