【发布时间】:2012-05-15 13:18:38
【问题描述】:
如何使用 OpenCV 检索视频的当前帧号? OpenCV 是否有任何内置函数来获取当前帧或者我必须手动完成?
【问题讨论】:
如何使用 OpenCV 检索视频的当前帧号? OpenCV 是否有任何内置函数来获取当前帧或者我必须手动完成?
【问题讨论】:
您可以使用捕获对象的“get”方法,如下所示:
capture.get(CV_CAP_PROP_POS_FRAMES); // retrieves the current frame number
还有:
capture.get(CV_CAP_PROP_FRAME_COUNT); // returns the number of total frames
顺便说一句,这些方法返回一个双精度值。
您也可以使用 cvGetCaptureProperty 方法(如果您使用旧的 C 接口)。
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
(来自学习 OpenCV 书)
【讨论】:
在 openCV 3.4 版中,正确的标志是:
cap.get(cv2.CAP_PROP_POS_FRAMES)
【讨论】:
opencv-contrib-python 版本 4.5.2.54
OpenCV python中的做法是这样的:
import cv2
cam = cv2.VideoCapture(<filename>);
print cam.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
【讨论】: