2012-05-06 926 views
4

OpenCVを使用してビデオの現在のフレーム番号を取得するにはどうすればよいですか? OpenCVには現在のフレームを取得するための組み込み関数がありますか、それとも手動で行う必要がありますか?OpenCVでの現在のフレーム番号の取得

答えて

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 

ところで、これらの方法では、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はビデオファイルに特有のもので、ビデオがキャプチャされた1秒あたりのフレーム数を示します。あなたのビデオを再生し、それが 正しいスピードで出てくるようにするには、 がこれを知る必要があります。 FOURCCは、現在読んでいるビデオに使用される圧縮コーデックの4文字のコードです。 FRAME_COUNTはビデオ内のフレームの総数でなければなりませんが、この図は完全に信頼できるものではありません。

+1

ありがとうございました。それは役に立ちました:) –

2

(学習OpenCVの本から)OpenCVのpythonでそれを行う方法は、このようなものです:

import cv2 
cam = cv2.VideoCapture(<filename>); 
print cam.get(cv2.cv.CV_CAP_PROP_POS_FRAMES) 
関連する問題