Получение текущего номера кадра в 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)