2017-02-14 42 views
0

我有一個問題,以在OpenCV庫Qt Creator上顯示圖像。斷言失敗(size.width> 0 && size.height> 0)Qt與OpenCV

我有一個程序在按下按鈕時顯示圖像。當我運行它,它給了我

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file C:\builds\2_4_PackSlave-win64-vc12-shared\opencv\modules\highgui\src\window.cpp, line 261 The program has unexpectedly finished.

using namespace cv; 

void MainWindow::on_start_clicked() 
{ 

    Mat src = imread("C:/Users/Amr/Documents/untitled7/layout.jpeg",CV_WINDOW_AUTOSIZE); 
    namedWindow("src",CV_WINDOW_AUTOSIZE); 
    imshow("src",src); 
    waitKey(0); 
    destroyWindow("src"); 
} 

但是當我嘗試這個節目,它工作得很好

using namespace cv; 

void MainWindow::on_start_clicked() 
{ 

    Mat src (500,500,CV_8UC3,Scalar(255,0,0)); 
    namedWindow("src",CV_WINDOW_AUTOSIZE); 
    imshow("src",src); 
    waitKey(0); 
    destroyWindow("src"); 
} 

我覺得這個問題是在目錄中,但我不知道這是什麼。我試圖將/更改爲\//,但仍然出現此錯誤。

+0

通過將返回值與'src.data!= NULL'進行比較來測試加載是否正確。 –

+2

的可能的複製[斷言失敗(size.width> 0 && size.height> 0)](http://stackoverflow.com/questions/20821269/assertion-failed-size-width0-size-height0) –

+0

我不我認爲這是一個騙局。在這裏很清楚錯誤是什麼意思..問題是爲什麼它不適用於當前的代碼行。只是我的兩分... – Miki

回答

2

假設路徑正確,使用CV_WINDOW_AUTOSIZE沒有意義。使用IMREAD_XXX

Mat src = imread("C:/Users/Amr/Documents/untitled7/layout.jpeg", IMREAD_COLOR); 

然而,仔細檢查路徑,記得 「image.jpeg」 是從 「image.jpg的」 不同。而且......你確定「untitled7」是正確的嗎?

+0

我得到了路徑通過複製過去,所以我敢肯定這是正確的,我已經嘗試IMREAD_COLOR而不是CV_WINDOW_AUTOSIZE,但仍然得到這個錯誤 – Amr

+0

我已經測試了圖像加載使用(stc.data)我知道現在它不是成功加載,但不知道爲什麼 – Amr

+1

你讀過我的回答?使用IMREAD_COLOR,檢查實際的分機,untitled7似乎不正確。而且......圖像是否存在? – Miki