17

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

4

3 に答える 3

35

以下のように、キャプチャオブジェクトの「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 

ところで、これらのメソッドはdouble値を返します。

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

  • POS_MSECは、ミリ秒単位で測定された、ビデオファイル内の現在の位置です。
  • POS_FRAMEは、ビデオ内の現在のフレームの位置です(ビデオの55番目のフレームなど)。
  • POS_AVI_RATIOは、0から1までの数値として指定された現在の位置です(これは、トラックバーを配置して、人々がビデオ内を移動できるようにする場合に実際に非常に役立ちます)。
  • FRAME_WIDTHおよびFRAME_HEIGHTは、読み取られる(またはカメラの現在の設定でキャプチャされる)ビデオの個々のフレームの寸法です。
  • FPSはビデオファイルに固有であり、ビデオがキャプチャされた1秒あたりのフレーム数を示します。ビデオを再生して適切な速度で再生したい場合は、これを知っておく必要があります。
  • FOURCCは、現在読んでいるビデオに使用される圧縮コーデックの4文字のコードです。
  • FRAME_COUNTはビデオのフレームの総数である必要がありますが、この数値は完全に信頼できるものではありません。

(Learning OpenCV bookから)

于 2012-05-06T23:43:06.053 に答える
8

openCVバージョン3.4では、正しいフラグは次のとおりです。

cap.get(cv2.CAP_PROP_POS_FRAMES)
于 2019-04-16T21:56:18.483 に答える
4

OpenCVpythonでそれを行う方法は次のようになります。

import cv2
cam = cv2.VideoCapture(<filename>);
print cam.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
于 2014-07-07T21:35:32.593 に答える