1

我正在使用 openCV 将视频分割成帧。为此,我需要 fps 和持续时间。当通过 cvGetCaptureProperty 询问时,这两个值都返回 1。

我做了一个 hack,我使用 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() 返回的值,如果返回空指针,您就处于视频序列的末尾。然后在发生这种情况时打破循环,而不是依赖 FPS*frame_number 的准确性。

于 2012-04-22T10:43:54.057 回答