Получение текущего номера кадра в OpenCV

Как я могу получить текущий номер кадра видео с помощью OpenCV? У OpenCV есть встроенная функция для получения текущего кадра или я должен сделать это вручную?

2 ответов


вы можете использовать метод "get" вашего объекта захвата, как показано ниже:

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 

Кстати, эти методы возвращают значение типа double.

вы также можете использовать метод 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 (это на самом деле очень полезно, когда вы хотите разместить trackbar, чтобы люди могли перемещаться по вашему видео). FRAME_WIDTH и FRAME_HEIGHT-это размеры отдельных кадров видео для чтения (или для съемки в текущих настройках камеры). FPS является спецификацией к видеофайлам и указывает количество кадров в секунду, при котором видео было захвачено; вы нужно будет знать это, если вы хотите воспроизвести свое видео и получить его на правильная скорость. FOURCC-это четырехсимвольный код для кодек сжатия, который будет использоваться для видео, которое вы сейчас читаете. FRAME_COUNT должно быть общее количество кадров в видео, но эта цифра не совсем надежна. (из книги обучения OpenCV )


способ сделать это в OpenCV python таков:

import cv2
cam = cv2.VideoCapture(<filename>);
print cam.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)