为什么 cv2.imshow() 在没有 cv2.waitkey() 的情况下不呈现?

Smi*_*453 2 opencv python-3.x

如果没有 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
Run Code Online (Sandbox Code Playgroud)

Sha*_*hew 6

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

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

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

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