openCV(python):窗口不刷新4k视频,除非调用waitKey(1)

时间:2018-08-27 11:24:03

标签: opencv video-capture opencv3.0 opencv-python

我想使用OpenCV for Python播放视频。想法是让视频在用户按下按钮时进行播放,而在用户不按按钮时暂停播放。代码看起来像这样:

import cv2

source = cv2.VideoCapture(r"path/to/video")

while source.isOpened():
    ok, frame = source.read()
    if not ok:
        break
    cv2.imshow('video', frame)
    if cv2.waitKey(0) & 0xff == ord('q'):
        break
cv2.destroyAllWindows()

这很好用,直到我在4K视频上尝试过为止。当我这样做时,视频似乎停滞不前,直到松开键,然后才显示最后一帧。我设法使用以下方法修复它:

import cv2

source = cv2.VideoCapture(r"path/to/video")

while source.isOpened():
    ok, frame = source.read()
    if not ok:
        break
    cv2.imshow('video', frame)
    if cv2.waitKey(0) & 0xff == ord('q'):
        break
    cv2.waitKey(1)  # <-- added this
cv2.destroyAllWindows()
  1. 为什么会这样?为什么waitKey(0)不能刷新窗口,而waitKey(1)可以刷新窗口?为什么只有当我播放4K视频时?
  2. 有什么方法可以使图像刷新而无需调用waitKey(1)?

0 个答案:

没有答案