如果没有cv2.waitkey()方法,cv2.imshow()将显示黑色窗口。为什么没有等待就不能正确地进行渲染?
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
答案 0 :(得分:3)
从cv2.imshow()
的文档中,“注释”部分提到窗口显示的时间为cv2.waitKey()
中的参数所指示的时间。 0
的参数表示永远等待,因此除非您处理按键,否则图像将永久显示。
在调试,显示中间图像等时控制窗口需要显示的持续时间是一个有用的方面。
从cv2.waitKey()
的文档中,NOTE部分提到'此函数是HighGUI中唯一可以获取和处理事件的方法,因此需要定期调用它以进行正常事件处理,除非在内部使用HighGUI一个负责事件处理的环境。'
您可以注意到,如果没有cv2.waitKey()
,如果将鼠标悬停在显示的窗口上,则会显示带有滚轮的“忙碌”光标,表示窗口正忙。