我正在尝试处理大型 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 读取您的文件。
关于c++ - cvQueryFrame() 在文件结束前返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7522830/