#python #opencv #video
Вопрос:
Я использую OpenCV для захвата видео с нескольких разных камер (OpenCV 4.5.1.48 в Ubuntu 18.04). Для всех камер я установил частоту кадров съемки на 30 кадров в секунду, но я заметил, что при считывании кадров в секунду записанного видео через
import cv2
cap = cv2.VideoCapture(input_video_path)
fps = cap.get(cv2.CAP_PROP_FPS)
print(fps)
что значения никогда не составляют ровно 30 кадров в секунду, а скорее
30.00030000300003
30.000299988570422
29.997772583098968
...
и так далее. Ожидается ли такое поведение? Когда я щелкаю правой кнопкой мыши на видео и смотрю на свойства видео, оно всегда показывает 30 кадров в секунду.
Видео, которое я записываю, длится около 10 минут, но если я вырежу меньшую часть видео (например, 30 секунд), то отклонение от 30 кадров в секунду будет еще больше, и OpenCV будет читать даже 29 кадров в секунду вместо 30.
Будет ли какое — либо реальное уменьшение от округления обнаруженной частоты кадров до целого числа при обработке видео? В частности, я хочу записать выходное видео со скоростью 10 кадров в секунду, снимая по одному каждые три кадра исходного видео, поэтому мне интересно, правильно ли устанавливать частоту кадров для записи видео на 10 кадров в секунду или мне следует использовать треть кадров в секунду, считываемых OpenCV.