2013-12-13 114 views
12

我是新來的OpenCV渲染圖像,最近獲得的OpenCV 2.4.7的預編譯的版本,是能夠成功地將其與Visual Studio 2010中OpenCV的imshow在屏幕上不

顯然庫似乎工作整合好,但是當我試圖使用imshow顯示圖像時,它會顯示窗口,但不顯示圖像。

{ 
    cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED); 

    if(image.empty()) 
    { 
     cout<<"image not loaded"; 
    } 
    else 
    { 
     cv::namedWindow("test", CV_WINDOW_AUTOSIZE); 
     cv::imshow("test",image); 
    } 
} 

任何幫助將不勝感激。

+0

你有'imshow'後[waitKey(http://docs.opencv.org/modules/highgui/doc/user_interface.html#waitkey)打個電話? –

+0

我會包含這個問題,但我最近得到了自己在這裏註冊,所以我不能包括圖像還 – Usama

+0

是試圖waitKey仍然沒有成功 – Usama

回答

17

您必須具有:代替

cv::waitKey(0); 

system("pause"); 

後者是行不通的。 OpenCV需要抽取消息來獲得窗口的顯示和更新,並且這個功能就是所有這樣做的機制。

由於文件說,waitKey只有當你有一個HighGUI窗口打開,所以在你的代碼,你可能需要做的工作的:

cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED); 

if(image.empty()) 
{ 
    cout<<"image not loaded"; 
} 
else 
{ 
    cv::namedWindow("test", CV_WINDOW_AUTOSIZE); 
    cv::imshow("test",image); 
    cv::waitKey(0); 
} 

萬一有一個與圖像格式有問題,你可能嘗試加載這樣的:

cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_COLOR); 
+3

我不知道怎麼感謝你更不,非常感謝你解決我的問題 – Usama

1

我建議去掉cv::namedWindow語句和cv:imshow語句後加入

cv::waitKey(); 

。您還可以檢查窗口的尺寸是否正確。

+0

已經做到了,你還提到沒有成功 – Usama

+0

從上面的回答,圖像問題似乎是在圖像格式。 – Totoro

+0

它不是,我沒有使用waitKey(0)最初 – Usama