Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ cvQueryFrame()在文件结束前返回NULL_C++_C_Opencv - Fatal编程技术网

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

C++ cvQueryFrame()在文件结束前返回NULL,c++,c,opencv,C++,C,Opencv,我正试图用计算机处理大型AVI文件(约61000帧,505MB) 使用cvCaptureFromAVI()和cvQueryFrame()打开CV 但是,cvQueryFrame()在到达最后一帧之前返回一个NULL指针 阿维 long int numframe = 6000; while (numframe < 67000) { frame = cvQueryFrame( capture ); if (! frame) { fprin

我正试图用计算机处理大型AVI文件(约61000帧,505MB) 使用
cvCaptureFromAVI()
cvQueryFrame()
打开CV

但是,
cvQueryFrame()
在到达最后一帧之前返回一个
NULL
指针 阿维

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++;
}
long int numframe=6000;
而(numframe<67000)
{        
帧=cvQueryFrame(捕获);
如果(!帧)
{
fprintf(stderr,“无法查询帧%ld.\n”,numframe);
打破
}
字符名称文件[250];
sprintf(名称文件,“/media/6E86F8CB03A4DFA4/image sequence/%ld.jpg”,numframe);
cvSaveImage(名称文件,帧);//将帧另存为图像
numframe++;
}
有没有其他人也遇到过同样的问题并找到了解决办法?
有什么我可以做的吗?

很可能您遇到了一个FFMPEG集成错误。看起来很像你的问题

您使用的是什么版本的OpenCV

我建议你:

  • 尝试另一个版本的OpenCV

  • 尝试在不使用FFMPEG的情况下构建OpenCV。OpenCV可能能够使用VfW或GStreamer读取您的文件


  • 我正在使用OpenCV 2.3.1。这与报告的问题完全相同。我将尝试OpenCV 2.2,因为他在bug报告中说,他在2.3、2.3.1和2.3.2中遇到了问题,但在OpenCV 2.2中没有。谢谢你的回答!