2016-12-17 56 views
1

OpenCV,如果我沒有在捕獲圖像的顯示循環中包含Cv2.WaitKey(1)行,則屏幕上不會顯示圖像。 在C++,phyton或C#上也會發生同樣的情況。OpenCV - 在捕獲循環中沒有顯示沒有waitkey的圖像

會是什麼原因,並有另一種選擇?

這個例子是在C#(opencvsharp):

VideoCapture cap = new VideoCapture(); 

Window w = new Window();  

cap.Open("animation.avi"); 

while (cap.Read(src)) { 
    Cv2.WaitKey(1); 
    w.ShowImage(src); 
} 
+0

@Rama Nah這更像是爲什麼你需要調用它才能看到圖像。我認爲他知道自己在做什麼 –

回答

2

技術上highgui需要waitkey()在調用,以獲得時間來更新窗口。

的OpenCV文檔參照imshow()功能(ShowImage在C#):

這個函數應跟其顯示爲 指定的毫秒圖像waitKey功能。否則,它將不會顯示 圖像。例如,waitKey(0)將無限地顯示窗口 ,直到任何按鍵(它適用於圖像顯示)。 waitKey(25) 將顯示一幀25 ms,之後顯示將自動關閉 。 (如果你把它放在一個循環讀取視頻,將 顯示視頻一幀一幀)

(在C# WaitKey()

而關於waitKey()功能:

此功能是隻有在HighGUI中可以獲取和處理事件的方法,因此需要週期性地調用正常事件 處理,除非在涉及事件處理的環境中使用HighGUI。

+0

您能否提供一個鏈接或引用的OpenCV文檔? – Rama

+0

http://docs.opencv.org/2.4/modules/highgui/doc/user_interface.html?highlight=waitkey –

+0

這個特定的OpenCV 3.1.0:http://docs.opencv.org/trunk/d7/dfc /group__highgui.html#ga5628525ad33f52eab17feebcfba38bd7 –