1

ビデオをフレームに分割するためにopenCVを使用しています。そのためには、fps と期間が必要です。これらの値は両方とも、cvGetCaptureProperty 経由で問い合わせると 1 を返します。

AVURLAsset を使用して fps と期間を取得するハックを作成しましたが、それを openCV と組み合わせると、部分的なビデオしか取得できません。フレームが欠けているようです。

これは今私のコードです:

while (cvGrabFrame(capture)) {
    frameCounter++;

    if (frameCounter % (int)(videoFPS / MyDesiredFramesPerSecond) == 0) {
      IplImage *frame = cvCloneImage(cvRetrieveFrame(capture));
      // Do Stuff     
    }

    if (frameCounter > duration*fps)
    break; // this is here because the loop never stops on its own
}

iOSでopenCVを使用してビデオのすべてのフレームを取得するにはどうすればよいですか? (opencv 2.3.2)

4

1 に答える 1

2

ドキュメントによると、cvRetrieveFrame() によって返された値を確認する必要があります。null ポインターが返された場合は、ビデオ シーケンスの最後にいます。次に、FPS*frame_number の精度に依存するのではなく、ループが発生したときにループを中断します。

于 2012-04-22T10:43:54.057 に答える