gpt4 book ai didi

c++ - OpenCV2.4 从视频中捕获帧可能存在的错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:12 28 4
gpt4 key购买 nike

会不会是OpenCV2.4 highgui在windows下抓帧有bug?

我安装了两个预编译库,那些都是我编译的,我可以完美地编译所有的东西,我可以运行我的程序,如果

它们是基于图像的。该问题仅针对视频。 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 文件?

最佳答案

作为临时解决方案,我决定重新编码视频,这样 OpenCV 就不会使用 ffmpeg。我使用 VirtualDubmicrosoft video 1 压缩,它使用“msvidc32.dll”驱动程序。

它适用于我所有的视频,所以现在就足够了,因为我可以继续在 Windows 中使用 OpenCV。

enter image description here

关于c++ - OpenCV2.4 从视频中捕获帧可能存在的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12423231/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com