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

标签 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++;
}

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

最佳答案

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

您使用的是什么版本的 OpenCV?

我推荐你的任何方式:

  1. 尝试另一个版本的 OpenCV

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

关于c++ - cvQueryFrame() 在文件结束前返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7522830/

相关文章:

android - pthread_t 在 android 和 linux 中

python - 在 openCV 中使用 approxPolyDP() 检测矩形不准确

java - 如何解决 "java.lang.UnsatisfiedLinkError: Can' t find dependent libraries"without System32?

c++ - 使用 float 的系列总和

c - 有没有一种工具可以使我的 C 源文件井然有序?

c - 如何摆脱角色以获得所需的输出

c++ - OpenCV:寻找 CPU 密集度较低的帧捕获+调整大小并进入缓冲方式:如何优化我的代码?

c++ - 从二进制索引树中删除元素

c++ - 减少 C++(或 x-treme x-macros)中的代码重复

c++ - 临时对象混淆