2012-05-06 2 views

ответ

11

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

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 книги)

+1

Большое спасибо. Это было полезно :) –

2

Способ сделать это в OpenCV питона, как это:

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