我正在使用OpenCV对AVI文件进行一些处理。除了只捕获原始视频中一小部分帧的事实之外,其他一切工作都很好。

这是我的代码的摘录:

capture=cvCaptureFromAVI(PATH_TO_VIDEO);
int fps=(int) cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
int frames=(int) cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);
qDebug("%d frames at %d fps",frames,fps);
int framesSaved=0;

while(1) {
    frame=cvQueryFrame(capture);
    if(!frame) break;

    framesSaved++;
    data = (uchar *)frame->imageData;
    //PROCESSING
    cvWriteFrame(writer,frame);
}

cvReleaseVideoWriter(&writer);
qDebug("VIDEO SAVED: %d frames",framesSaved);

输出:
1948 frames at 50 fps
VIDEO SAVED: 105 frames

知道可能是什么问题吗?

谢谢

最佳答案

已知OpenCV VideoCapture存在严重问题,无法使用CV_CAP_PROP_FRAME_COUNT报告正确的帧数

好消息是,OpenCV的家伙们正在努力修复其下一个版本。

关于opencv - OpenCV仅捕获视频文件中的一小部分帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9547102/

10-10 23:04