【发布时间】:2012-09-07 13:01:26
【问题描述】:
会不会是 OpenCV2.4 highgui 中存在用于在 windows 中从视频中捕获帧的错误?
我安装了两个预编译的库,我编译的,我可以完美地编译所有东西,如果我可以运行我的程序
它们是基于图像的。问题仅针对视频。 OpenCV 在这个函数中总是崩溃:
virtual IplImage* retrieveFrame(int)
{
unsigned char* data = 0;
int step=0, width=0, height=0, cn=0;
if(!ffmpegCapture ||
!icvRetrieveFrame_FFMPEG_p(ffmpegCapture,&data,&step,&width,&height,&cn)) <-------CRASHES HERE
return 0;
cvInitImageHeader(&frame, cvSize(width, height), 8, cn);
cvSetData(&frame, data, step);
return &frame;
}
这是在 cap_ffmpeg.cpp 类中,由 VideoCapture 调用。
我尝试了 2.4.2 和 2.4.9 版本。我的程序正在使用 opencv2 进行查找
更多信息
Windows 7
使用 cmake 构建项目(很重要,因为 cmake 可能没有构建/找到正确的编解码器)
VisualStudio 9 2008
OpenCV 2.4.2
编辑
看起来它实际上是一个bug,那么,我该如何解决这个问题并更改我的代码以能够读取 avi 文件?
【问题讨论】:
-
为什么不呢?它是软件 :) 看起来像您描述的问题code.opencv.org/issues/2115
-
@Sergey hehe,是的,我相信,但它很痛苦。我需要发展,现在我必须与这种……耐心作斗争
-
根据描述,您需要降级 2.4->2.1 或自行修复并发布补丁以帮助其他人 :) 据我所知,在 Windows 上使用 ffmpeg 是个坏主意。 AFAIR 它应该是 OpenCV 的 DirectDraw 捕获,但也许我错了。