Как я могу получить текущий номер кадра видео с помощью OpenCV? У OpenCV есть встроенная функция для получения текущего кадра, или я должен сделать это вручную?Извлечение текущего номера кадра в OpenCV
ответ
Вы можете использовать метод "получить" вашего объекта съемки, как показано ниже:
capture.get(CV_CAP_PROP_POS_FRAMES); // retrieves the current frame number
, а также:
capture.get(CV_CAP_PROP_FRAME_COUNT); // retuns the number of total frames
Btw, эти методы возвращают двойное значение.
Вы также можете использовать метод cvGetCaptureProperty.
cvGetCaptureProperty (CvCapture * capture, int property_id);
варианты PROPERTY_ID ниже с определениями:
CV_CAP_PROP_POS_MSEC 0
CV_CAP_PROP_POS_FRAME 1
CV_CAP_PROP_POS_AVI_RATIO 2
CV_CAP_PROP_FRAME_WIDTH 3
CV_CAP_PROP_FRAME_HEIGHT 4
CV_CAP_PROP_FPS 5
CV_CAP_PROP_FOURCC 6
CV_CAP_PROP_FRAME_COUNT 7
POS_MSEC является текущее положение в видеофайле, измеренное в миллисекундах. POS_FRAME - текущая позиция в номере кадра. POS_AVI_RATIO - это позиция, заданная как число от 0 до 1 (это действительно полезно, если вы хотите разместить трек-панель, чтобы люди могли перемещаться по вашему видео). FRAME_WIDTH и FRAME_HEIGHT - это размеры отдельных кадров видео для чтения (или для съемки в текущих настройках камеры). FPS соответствует видеофайлам и указывает количество кадров в секунду, на которых было записано видео; вам нужно будет знать это, если вы хотите воспроизвести свое видео и получить его на правильной скорости . FOURCC - это четырехсимвольный код для кодека сжатия, который будет использоваться для видео, которое вы сейчас читаете. FRAME_COUNT должно быть общее количество кадров в видео, но этот рисунок не является полностью надежным. (от Learning OpenCV книги)
Способ сделать это в OpenCV питона, как это:
import cv2
cam = cv2.VideoCapture(<filename>);
print cam.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
Большое спасибо. Это было полезно :) –