Как использовать cv2.CAP_PROP_POS_FRAMES для извлечения видеокадра?
Я работаю над обработкой видео, и один из шагов, которые мне нужно выполнить, - извлечь конкретный кадр из видео.
cap = cv2.VideoCapture(videoFile)
for frame in range(startFrame, endFrame):
cap.set(cv2.CAP_PROP_POS_FRAMES, frame)
print frame
position = cap.get(cv2.CAP_PROP_POS_FRAMES)
print position
В идеале рама и положение должны быть одинаковыми. Это изначально верно. Однако после 2 или 3 циклов позиция становится -2.04963823041e+15. Я очень смущен этим. Я запускаю это на сервере amazonaws с Anaconda и OpenCV 3.
1 ответ
Это старый вопрос, но я оставлю свои наблюдения, так как он был в первых числах результатов, когда я искал подсказки.
Причина, по которой я столкнулся с этой проблемой, вероятно, отличалась от того, что было для OP, но в моем случае у меня было странное поведение, когда
Интересно, что перемотка будет работать для произвольно малого числа кадров, например, при работе с файлом 7000 кадров она будет работать для перемотки на ~ 2000 кадров, но не будет надежно работать при перемотке на кадр выше 4000.
Как только я удалил переменную окружения, перемотка работает надежно для любого номера кадра. И теперь на перемотку уходит меньше времени, чем при включенном ускорении на GPU ...