1

ビデオがあり、フレームを処理したい。

VideoCapture capture("movie.mpg");

while(true) {
  Mat frame;
  capture >> frame;

  // This may take some time to finish
  processFrame(frame);

  if (waitKey(80) == 'q')
    break;
}

問題は、ハードコーディングされた遅延を使用するwaitKey(80)と、ビデオの fps が正しくないことです。たとえば、上記のコードは 1 秒あたり 12 フレームでビデオを表示しようとしますが、processFrame()完了するまでに時間がかかる場合、fps が低くなり、ビデオが遅れて見えます。

ここで遅延値を計算する必要があります。fps が 12 のままになるように値を動的に割り当てるにはどうすればよいですか? ありがとう。

4

1 に答える 1

0

キャプチャ インターフェイスにクエリを実行することで、ビデオの実際のFPS を取得できます。

double fps = capture.get(CV_CAP_PROP_FPS);

また、ビデオの総フレーム数を で確認することもできますCV_CAP_PROP_FRAME_COUNT

その情報を使用して、簡単な計算を行い、遅延する正確な時間を見つけることができます。

于 2012-06-25T00:33:55.260 に答える