2017-06-30 4 views
-1

Ohne die cv2.waitkey() Methode zeigt cv2.imshow() ein schwarzes Fenster an. Warum passiert das Rendering nicht ohne die Wartezeit?Warum wird die cv2.imshow() nicht ohne cv2.waitkey() gerendert?

cap = cv2.VideoCapture(video_path) 
while cap.isOpened(): 
    ret,frame = cap.read() 
    cv2.imshow('window-name',frame) 
    # without the following cv2.waitkey(1) statement the cv2.imshow() displays a blank window 
    if cv2.waitKey(1) & 0xFF == ord('q'): # wait for 1 millisecond 
     break 
    continue 

Antwort

2

Aus der Dokumentation von cv2.imshow() erwähnt der Hinweis Abschnitt, dass das Fenster für die Höhe der Zeit durch das Argument in cv2.waitKey() angegeben angezeigt wird. Ein Argument von 0 zeigt an, dass Sie für immer warten müssen. Daher wird das Bild für immer angezeigt, es sei denn, Sie bearbeiten den Tastendruck.

die Dauer steuern, für die das Fenster ein nützlicher Aspekt beim Debuggen, die Anzeige von Zwischenbildern, die angezeigt braucht, ist usw.

Aus der Dokumentation von cv2.waitKey() erwähnt der Hinweis Abschnitt, dass ‚diese Funktion die einzige Methode ist in HighGUI, die Ereignisse abrufen und verarbeiten kann, muss daher regelmäßig für die normale Ereignisverarbeitung aufgerufen werden, es sei denn, HighGUI wird in einer Umgebung verwendet, die sich um die Ereignisverarbeitung kümmert.

Sie können feststellen, dass ohne den cv2.waitKey(), wenn Sie den Mauszeiger über das angezeigte Fenster bewegen, der Cursor "busy" mit dem rollenden Rad angezeigt wird und anzeigt, dass das Fenster beschäftigt ist.