为什么没有cv2.waitkey()就不会渲染cv2.imshow()?

时间:2017-06-30 20:55:05

标签: python-3.x opencv

如果没有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

1 个答案:

答案 0 :(得分:3)

cv2.imshow()的文档中,“注释”部分提到窗口显示的时间为cv2.waitKey()中的参数所指示的时间。 0的参数表示永远等待,因此除非您处理按键,否则图像将永久显示。

在调试,显示中间图像等时控制窗口需要显示的持续时间是一个有用的方面。

cv2.waitKey()的文档中,NOTE部分提到'此函数是HighGUI中唯一可以获取和处理事件的方法,因此需要定期调用它以进行正常事件处理,除非在内部使用HighGUI一个负责事件处理的环境。'

您可以注意到,如果没有cv2.waitKey(),如果将鼠标悬停在显示的窗口上,则会显示带有滚轮的“忙碌”光标,表示窗口正忙。