2012-05-06 70 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)