gpt4 book ai didi

c++ - 无法在 opencv 3 中读取 mp4 文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:16 26 4
gpt4 key购买 nike

尝试使用 VideoCapture 打开文件时,我什至无法编译 opencv 3.0.0(来自 opencv 网站的预编译版本)。

我将我的代码缩减为:

#include "stdafx.h"
#include <opencv/cxcore.h>
#include <opencv2/core/mat.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <opencv/cxcore.h>
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>

#include <string>
#include <cmath>
#include <time.h>

using namespace cv;
using namespace std;
int main() {
VideoCapture inputCap("C:/Users/user.name/Desktop/Video0022.mp4");
}

编译它会产生:opencv_ffmpeg300_64.dll : fata error LNK1107: invalid or corrupt file: cannot read at 0x408,在文件 opencv_ffmpeg300_64.dll 中,第 1 行,第 1 列。

这是在 Win 7 机器上使用 Visual Studio Express 2012,在 x64 中用 C++ 编译。我试过在 Release模式和 Debug模式下编译代码,但它给出了同样的错误。 dll 在链接器附加依赖项中,我在附加库目录中有它所在的库。

那行不通,环顾四周,我发现在 Java 和 Python 版本中,将目录添加到路径变量有时会奏效。也是如此,重新启动,再次尝试,同样的错误。

然后我开始在它可能有用的任何地方添加 dll - 所有通过我的文档/Visual Studio 12/Projects/ProjectName 文件夹,在 opencv 文件夹中的多个位置,仍然是相同的错误。

我也试过关闭启用增量链接,但也没有用。

我很确定这不是编解码器问题,因为它在 opencv 2.4.7/visual studio 10 中工作(我将文件夹重命名为 opencv 2 文件夹,以免与 opencv 3.0.0 安装混淆)。

视频本身很好,我可以在 VLC 和 Windows Media Player 中打开它,没有问题,并且可以使用较旧的 opencv 东西。

如果我从链接器附加依赖项中删除 dll,我实际上可以编译 .cpp,但它永远不会真正打开文件(inputCap.isOpened() 总是返回 false)。但是,我可以毫无问题地打开网络摄像头。

--

编辑:我将发布运行时库更改为/MT 而不是/MD,删除了链接器附加依赖项的调试版本和发布版本上的 opencv_ffmpeg300_64.dll,现在发布版本和调试版本都可以编译并正常工作那个视频文件。

最佳答案

(没有意识到如果我解决了我自己的问题,礼仪就是回答问题,哎呀)

设法通过将发布运行时库更改为/MT 而不是/MD 来修复它,删除链接器附加依赖项的调试和发布版本上的 opencv_ffmpeg300_64.dll,现在发布和调试都可以编译和工作适合那个视频文件。

关于c++ - 无法在 opencv 3 中读取 mp4 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34095957/

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