Поэтому я не буду вдаваться в подробности того, что делает код, потому что это не имеет отношения к рассматриваемой проблеме. Я заметил, что выходное видео из моей программы воспроизводится слишком быстро, и во время отладки я решил просто посмотреть, как оно выглядит, когда я просто воспроизвожу входное видео.
Итак, код воспроизведения выглядит примерно так:
Код: Выделить всё
cap = cv2.VideoCapture(video_path)
video_fps = cap.get(cv2.CAP_PROP_FPS)
#returns 49.8
while cap.isOpened():
ret, frame = cap.read()
if ret:
cv2.imshow('a', frame)
cv2.waitkey(int(1000/video_fps))
else:
break
Еще одна странность заключается в том, что когда я делю результат cap.get(cv2.CAP_PROP_POS_FRAMES) на длину видео в секундах, я снова получаю 49.8, и поскольку я знаю, что длина должна быть правильной, я могу только догадываться, что OpenCV неправильно определяет количество кадров (?)
Поэтому мои вопросы:
1) Что здесь, черт возьми, происходит?
2) Есть ли лучший\более надежный способ проверить fps видео и количество кадров?
Подробнее здесь: https://stackoverflow.com/questions/541 ... of-a-video