我正在尝试处理大型AVI文件(约61000帧,505MB),
OpenCV,使用cvCaptureFromAVI()cvQueryFrame()

但是,cvQueryFrame()在到达最后一帧之前返回NULL指针
的AVI。

long int numframe = 6000;
while (numframe < 67000)
{
    frame = cvQueryFrame( capture );
    if (! frame)
    {
        fprintf(stderr, "could not query the frame %ld.\n", numframe);
        break;
    }

    char namefile[250];
    sprintf( namefile, "/media/6E86F8CB03A4DFA4/image-sequence/%ld.jpg", numframe );
    cvSaveImage( namefile, frame ); // save frame as a image

    numframe++;
}

是否还有其他人遇到过同样的问题并找到了解决方法?
有什么我可以做的吗?

最佳答案

很可能您是FFMPEG集成错误之一。 This bugreport看起来与您的问题非常相似。

您正在使用哪个版本的OpenCV?

我以任何方式推荐您:

  • 尝试其他版本的OpenCV
  • 尝试在没有FFMPEG的情况下构建OpenCV。 OpenCV可能将能够使用VfW或GStreamer读取文件。
  • 09-06 20:33