2013-10-24 54 views
8

我寫了OpenCV的代碼和我的代碼如下聲明:OpenCV的imshow()不工作

cv::imshow("Matches", matchesImg); 
cv::waitKey(0); 

當我運行無論是在調試或發佈的代碼,我無法看到的窗口,顯示了我輸出。

這正是我創建的每個項目都發生的情況。

無法弄清原因,有人能指導我嗎?

正如我在評論中提到我編碼在Windows 7和Visual Studio 2010,與2.4.6

+0

你能證明你對matchImg有效嗎?你會得到什麼錯誤? – KobeJohn

+0

確保matchesImg不爲空。 – ChronoTrigger

+0

不是圖像不是空的。問題是我也沒有得到任何錯誤。我的代碼運行良好。當我使用imwrite保存圖像時,我得到正確的輸出。只有節目不適用於任何代碼。我也嘗試重新安裝。 –

回答

3

OpenCV的版本,你必須首先創建一個窗口,使用namedWindow具有相同名稱的窗口中imshow 有關詳細信息,請參閱此tutorial

編輯

This強烈建議您事先創建窗口。有些人可能會爭辯說,它不適用於以前版本的OpenCV。然後,讓我們說這個解決方案至少應用於OpenCV 2.4.6,這是這裏關注的版本(並且它解決了這個問題)。

+1

儘管2.4.6可能如此,但對於2.4.4而言(至少對我而言)並非如此。 – Bull

+0

我認爲自OpenCV 1.0以來它一直如此。爲什麼不適合你? – CTZStef

+1

我剛剛檢查了2.4.4源代碼。 'imshow()'只是調用'cvShowImage()',並且至少在Windows上,如果指定的窗口不存在,則調用'cvNamedWindow()'來創建它。因此,您的答案不適用於Windows 7上的OpenCV 2.4.4,可能不適用於其他平臺。 – Bull