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的回答了。