2012-04-22 130 views
1

我使用openCV将视频分割成帧。为此我需要fps和持续时间。当通过cvGetCaptureProperty询问它们时,这两个值都返回1。iOS上的opencv cvGrabFrame帧速率?

我做了一个黑客,我使用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)

回答

2

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