求救-qt 转 msvc 后 Opencv 始终打不开视频!

28 天前
 MrKeanu

项目背景:这段时间为实验室做了一个小项目,技术栈原本为 QT+Opencv+Mingw ,一切正常。但因为引入了 onnxruntime 所以转为 msvc2019C++编译器,自此噩梦不断。

问题描述:在 debug 其他问题后,目前遇到一个玄学 bug ,使用 QFileDialog 获取到了 QString 类型的文件路径,在使用 toLocal8Bit 转换为 msvc 编码的标注 string 后 opencv 的 cap.open 始终无法打开文件。我是使用了浑身解数也无法,只能来论坛求助大神了!

问题补充:我尝试过将 FFMPEG 的 dll 复制到可执行软件的同目录,配置系统环境还有重新编译 opencv 等方法,均无效果。

获取文件路径的代码:

    QString videoPath = QFileDialog::getOpenFileName(this, "打开文件", usedPath, tr("视频 (*.avi *.mp4 *.wmv)"));

调用 opencv 的代码:

    cv::String dir = std::string(videoPath.toLocal8Bit());
    // cap.open(videoPath.toStdString());
    cap.open(dir, cv::CAP_FFMPEG);
870 次点击
所在节点    程序员
2 条回复
4u1kto
27 天前
尝试使用 toStdString(),把 dir 前后的路径都 print 出来试试,提供更多的错误信息或截图
MrKeanu
27 天前
@4u1kto 感谢您的回复!这个问题昨晚上终于解决了,导入依赖的顺序问题,同名依赖会按顺序导入致使项目出现异常,又难以发现。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1068867

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX