iOS上的opencv cvGrabFrame帧率?

时间:2012-04-22 10:31:22

标签: ios opencv

我正在使用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)

1 个答案:

答案 0 :(得分:2)

根据documentation你应该检查cvRetrieveFrame()返回的值,如果返回一个空指针,你就在视频序列的末尾。然后在发生这种情况时打破循环,而不是依赖于FPS * frame_number的准确性。