2011-09-27 119 views
0

我的C++ opencv程序有問題。它應該顯示我加載的圖片,但調試後只會彈出一個灰色的窗口。這是我的代碼:顯示圖像第二版

#include <cv.h> 
#include <highgui.h> 
int main(int argc, char* argv[]) 
{ 
    IplImage* img = cvLoadImage("IMG_7321_.jpg"); 
    cvNamedWindow("IMG_7321_", CV_WINDOW_AUTOSIZE); 
    cvShowImage("IMG_7321_", img); 
    cvWaitKey(0); 
    cvReleaseImage(&img); 
    cvDestroyWindow("IMG_7321_"); 

    return 0; 
} 

.jpg文件位於項目文件夾中。

有人可以告訴我,我必須做什麼才能顯示圖片。幫助將非常感謝!

+0

你確定「release」行不應該是'cvReleaseImage(img);'? –

+0

@KerrekSB cvReleaseImage調用是正確的。它修改'img'變量,使其通過引用傳遞。 – SSteve

+0

@SSteve:如果要通過引用傳遞'img',爲什麼OP將它作爲指針傳遞? –

回答

1

您應該檢查是否成功加載文件。試試這個:

int main(int argc, char* argv[]) 
{ 
    IplImage* img = cvLoadImage("IMG_7321_.jpg"); 
    if (!img) { 
     fprintf(stderr, "Image not found\n"); 
     return -1; 
    } 
    cvNamedWindow("IMG_7321_", CV_WINDOW_AUTOSIZE); 
    cvShowImage("IMG_7321_", img); 
    cvWaitKey(0); 
    cvReleaseImage(&img); 
    cvDestroyWindow("IMG_7321_"); 

    return 0; 
} 
+0

讓你們幫忙! – user967493

+0

對SSteve:我不能檢查,因爲命令窗口只打開幾毫秒,然後立即關閉 - >我不能讀取輸出^^ – user967493

+0

到SSteve:我設法檢查現在,沒有「返回-1;」命令窗口保持打開^^(你知道爲什麼?)。我怎樣才能讓程序加載文件? (即時通訊如此抱歉,所有這些問題,但這東西是如此複雜,沒有這樣的記錄中列出) – user967493