如果没有 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)
从 的文档中cv2.imshow(),NOTE 部分提到该窗口的显示时间由 中的参数指示cv2.waitKey()。参数0表示永远等待,因此除非您处理按键,否则图像将永远显示。
在调试、显示中间图像等时,控制窗口需要显示的持续时间是一个有用的方面。
从 的文档中cv2.waitKey(),NOTE 部分提到'此函数是 HighGUI 中唯一可以获取和处理事件的方法,因此需要定期调用它以进行正常的事件处理,除非在处理事件处理的环境中使用 HighGUI .'
您可以注意到,没有cv2.waitKey(), 如果您将鼠标悬停在显示的窗口上,则会显示带有滚轮的“忙”光标,表示该窗口正忙。