2

我正在尝试以 OpenCV 2.1、VS2008 标准读取 avi 文件 2 天,但没有运气。我经常在程序控制台中收到此消息:

编译器未对齐堆栈变量。Libavcodec 已被错误编译,可能非常缓慢或崩溃。这不是 libavcodec 中的错误,而是编译器中的错误。您可以尝试使用 gcc >= 4.2 重新编译。不要向 FFmpeg 开发人员报告崩溃。

..我得到的帧速率是 0.5fps 播放。我尝试了各种 AVI 和 MPEG 文件,结果仍然相同。此外,包含使用网络摄像头的示例非常慢。我在使用 OpenCV 1.1 时没有遇到这样的问题

我已经尝试解决此问题的事情:

  • 重新编译整个库
  • 从 SVN 更新库并重新编译
  • 尝试了各种版本的 libavcodec.a 文件

我用来读取文件的代码如下所示:

CvCapture* input_video = cvCreateFileCapture("c:\\data\test.avi");
// ...
while (true) {
    // ...
    frame = cvQueryFrame( input_video );
    cvShowImage("test", frame); 
    // ...
}

谁能帮我?这让我发疯:(

4

1 回答 1

1

好吧,您还应该检查 cvCaptureFromAVI() 来替换 cvCreateFileCapture()。也许这是个好主意。

但我肯定会重新编译这个库。尝试在配置中添加此选项: --enable-force-stack-realign--enable-memalign-hack

这些家伙似乎已经解决了它: http: //ffmpeg.arrozcru.org/forum/viewtopic.php?f=9 &t=568

如果没有任何效果,为什么不试试 Windows 的预编译二进制文件呢? http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/

无论如何,您的问题是特定于软件的。我强烈建议您在适当的邮件列表和 OpenCV 相关论坛中寻找答案。

于 2010-07-20T23:25:14.923 回答