WarmthWind 2024-08-29 23:29 采纳率: 0%
浏览 8
已结题

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

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

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

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

问题补充:目前的项目环境是win10+QT6.4+vs2019+QtCreator,opencv为4.60。我尝试过将 FFMPEG 的 dll 复制到可执行软件的同目录,配置系统环境还有重新编译 opencv 等方法,均无效果。我推测还是因为传入open的dir编码格式存在问题,但是按照网上的方法修改后,甚至使用全英文的路径依然无法打开视频!

获取文件路径的代码:

    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);

问题补充2:本人已经查过各种博客,也问过GPT,但问题依然未得到解决。因此希望后续回复者有一些自己的见解,不用搬GPT的回答了。

  • 写回答

16条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-08-29 23:31
    关注

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    QT 转 MSVC 后,OPENCV 无法打开视频!

    首先,你需要确保你的项目已经正确地安装了 QT 和 OPENCV。如果这些都已安装好,那么问题可能出在 OPENCV 上。

    1. 检查 OPENCV 的版本是否与你使用的 QT 版本匹配。通常情况下,QT 必须支持 OPENCV。
    2. 确保你的项目中使用的是最新版本的 OPENCV。如果你是初次使用 OPENCV,可以参考官方文档来检查和更新。
    3. 如果以上步骤都无法解决问题,可能是 OPENCV 的问题。你可以尝试重新安装 OPENCV,并看看问题是否依然存在。
    4. 如果以上步骤都没有解决,那么可能是你的项目中的某个部分出现了问题。例如,可能是你的视频文件有问题,或者你没有正确设置 OPENCV 的参数等。

    如果你遇到的问题是关于 QT,我建议你在 QML 中添加一个信号和槽来监听 QT 的事件,这样可以在 QT 退出时调用你的函数。如果 QT 本身存在问题,那么需要找到并修复它。如果问题仍然存在,那么你应该考虑将你的项目从 QT 转到其他的平台或库。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月30日
  • 修改了问题 8月29日
  • 创建了问题 8月29日

悬赏问题

  • ¥15 通信专业本科生论文选这两个哪个方向好研究呀
  • ¥50 我在一个购物网站的排队系统排队,这个排队到号后重新定向到目标网站进行购物,但是有技术牛通过技术方法直接跳过排队系统进入目标网址购物,有没有什么软件或者脚本可以用
  • ¥15 ios可以实现ymodem-1k协议 1024字节传输吗?
  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥15 服务端控制goose报文控制块的发布问题