cvQueryFrame()在文件结束前返回NULL

时间:2011-09-22 23:52:46

标签: c++ c opencv

我正在尝试处理大型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++;
}

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

1 个答案:

答案 0 :(得分:1)

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

您使用的是哪个版本的OpenCV?

我推荐你的任何方式:

  1. 尝试其他版本的OpenCV

  2. 尝试在没有FFMPEG的情况下构建OpenCV。可能OpenCV将能够使用VfW或GStreamer读取您的文件。