2012-05-06 47 views

回答

11

您可以使用您的捕获物的 “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之间的数字给出的位置(当您想定位轨迹栏以允许人们浏览视频时,这实际上非常有用)。 FRAME_WIDTH和FRAME_HEIGHT是要读取的视频 的各个帧的尺寸(或在摄像机的当前设置下采集)。 FPS特定于视频文件,并指示捕获视频的每秒帧数;如果您想播放视频并以 的正确速度播放,则您需要知道这一点。 FOURCC是用于您正在阅读的视频的压缩编解码器的四字符代码。 FRAME_COUNT应该是视频中的总帧数,但该数据并不完全可靠。 (来自OpenCV的学习书)

+1

非常感谢你。这很有帮助:) –

2

在OpenCV的蟒蛇做的方式是这样的:

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