openCV (python): окно не обновляет видео 4k, если только не вызывается waitKey (1) - PullRequest
0 голосов
/ 27 августа 2018

Я хочу воспроизвести видео, используя OpenCV для 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)?
...