qt5+opencv配置过程

主要参考以下文章

官方教程

配置过程需要使用cmake,因此需要先下载cmake

qt版本:5.9.6
opencv版本:3.4.9
cmake版本:3.18.5
我一开始下的是opencv4,后来一直提示ffmpeg与opencv版本不一致,所以又下载了opencv3
opencv4配置很顺利,但是opencv3在cmake软件以及mingw32-make中遇到了很多问题

01 下载cmake

下载地址:https://cmake.org/download/
在这里插入图片描述
在这里插入图片描述
剩下一路next就可以了

02 qt+opencv的配置

  • 打开cmake,第一个地方是opencv的sources文件夹的路径,第二个地方是将要生成的配置库地址,可以自己指定。然后点击configure
    在这里插入图片描述
  • 在弹出框中选择MinGW Makefile,选择Specify native compilers,点击Next,如下图所示
    在这里插入图片描述
  • 点击next,选择gcc.exe和g++.exe所在路径
    eg:
    C对应E:/Mysoftware/Qt5.12.22/Tools/mingw730_32/bin/gcc.exe
    C++对应E:/Mysoftware/Qt5.12.22/Tools/mingw730_32/bin/g++.exe
    在这里插入图片描述
  • 完成后下拉将WITH_OPENGLWITH_QT选中,然后再次点击Configure
    在这里插入图片描述
  • 这一步可能会报错,也可能不会,只需要吧QT5_DIR的值改为D:\Applications\qt\qt\5.9.6\mingw53_32\lib\cmake\Qt5,然后再次configure(图中的位置有错误,需要再到QT5
    在这里插入图片描述
  • 然后再修改位置,再configure
    在这里插入图片描述
    将红色区域中的Value地址路径改为你的Qt安装路径下对应的Qt5ConcurrentQt5CoreQt5GuiQt5TestQt5WidgetsQt5,我的文件路径如下所示,路径参考:
    E:/Mysoftware/Qt5.12.22/5.12.2/mingw73_32/lib/cmake/Qt5Concurrent
    E:/Mysoftware/Qt5.12.22/5.12.2/mingw73_32/lib/cmake/Qt5Core
    E:/Mysoftware/Qt5.12.22/5.12.2/mingw73_32/lib/cmake/Qt5Gui
    E:/Mysoftware/Qt5.12.22/5.12.2/mingw73_32/lib/cmake/Qt5OpenGL
    E:/Mysoftware/Qt5.12.22/5.12.2/mingw73_32/lib/cmake/Qt5Test
    E:/Mysoftware/Qt5.12.22/5.12.2/mingw73_32/lib/cmake/Qt5Widgets
    E:/Mysoftware/Qt5.12.22/5.12.2/mingw73_32/lib/cmake/Qt5
  • 然后就没有红色的了,在下拉框中找到CMAKE_BUILD_TYPE选择Release类型,再次点击Configure
    在这里插入图片描述
  • 若没有报错,点击Generate,Generating done之后,关闭Cmake即可,然后进入之前我们新建的cmakeInstall文件夹中可以看到生成的文件
    在这里插入图片描述
  • 将鼠标放在该文件夹界面内,按住shift键,同时点击鼠标右键,对话框中点击在此处打开Powershell窗口(s),进入Windows Powershell,输入下面指令并回车:mingw32-make -j 8(其中j 8代表8线程,和电脑有关,可以更改)。等待一段时间
  • 100%完成之后,输入下面指令并回车:mingw32-make install,完成后关闭窗口
  • 配置环境变量。将新生成的 D:\Applications\opencv\installCmake\bin 添加到path变量

03 测试

  • 新建qt工程,在.pro文件中加入以下语句
    (因为后面opencv重装了,所以路径和签名的不是很对应)
INCLUDEPATH += D:\Applications\opencv3\opencv\build\include
               D:\Applications\opencv3\opencv\build\include\opencv
               D:\Applications\opencv3\opencv\build\include\opencv2
LIBS += D:\Applications\opencv3\qtBuild\lib\libopencv_*.a

注意 INCLUDEPATH 里是opencv的地址,LIBS里是通过cmake生成的地址
位置如下:
在这里插入图片描述

  • 在mainwindow.cpp里加两段
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
	Mat image;
    image = imread("D:\\study\\spiderman.jpg");
    namedWindow( "Display window", WINDOW_AUTOSIZE );
    imshow( "Display window", image );

位置如下图
在这里插入图片描述
注:路径符号为/或者\\,而不是\
运行,当出现图片,则说明配置成功
在这里插入图片描述

04 报错

4.1 在cmake中选择gcc和g++位置后生成报错

  • 报错:CMake Error: CMake was unable to find a build program corresponding to “MinGW Makefiles”. CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.在这里插入图片描述
  • 解决:https://stackoverflow.com/questions/45150172/cmake-error-cmake-was-unable-to-find-a-build-program-corresponding-to-mingw-ma
    如果在cmd中输入mingw32-make回车后显示 ‘mingw32-make’ is not recognized as an internal or external command, operable program or batch file
    则配置环境变量,系统变量path中加入D:\Applications\qt\qt\Tools\mingw530_32\bin(这是mingw32-make.exe的路径)
    然后关了cmd,再重新打开,然后重新运行mingw32-make,显示 mingw32-make: *** No targets specified and no makefile found. Stop. ,则说明已经配置好了

4.2 ffmpeg下载有问题

  • 参考
    https://blog.csdn.net/star_of_science/article/details/104406819
    https://blog.csdn.net/jjookkeerr95/article/details/108399546l

  • 问题
    看cmake,发现错误写在D:/Applications/opencv/opencvQt/CMakeDownloadLog.txt里,为了方便用notepad打开
    在这里插入图片描述
    然后可以看到是缺失了文件
    在这里插入图片描述
    缺失文件如下:
    #missing “D:/Applications/opencv/opencvQt/3rdparty/ffmpeg/opencv_ffmpeg.dll”
    #missing “D:/Applications/opencv/opencvQt/3rdparty/ffmpeg/opencv_ffmpeg_64.dll”
    #missing “D:/Applications/opencv/opencvQt/3rdparty/ffmpeg/ffmpeg_version.cmake”

  • 解决
    下载文件,需要能连外网
    下载地址如下图所示:
    eg:https://raw.githubusercontent.com/opencv/opencv_3rdparty/fe71c0ad807fdc33c2178e48e488f1e9b177c39a/ffmpeg/opencv_ffmpeg.dll
    在这里插入图片描述
    可以直接通过外网下载好需要的文件,然后
    ①重命名为"md5-文件名",放在 /.cache/ffmpeg/ 文件夹下面,(eg:D:/Applications/opencv/opencv/sources/.cache)
    或者
    ②直接放到目标路径 /3rdparty/ffmpeg/opencv_ffmpeg.dll(不用重命名),(eg:D:/Applications/opencv/opencvQt/3rdparty/ffmpeg/opencv_ffmpeg.dll)

  • 注意

  1. dll直接下载就可以。cmake不是直接下载,而是直接打开了ffmpeg_version.cmake的网页,可以右键网页选择另存为 ffmpeg_version.cmake.txt,然后再改为ffmpeg_version.cmake。这里如果自己新建一个txt,然后直接将网页上的内容拷进去,然后再该后缀为.cmake是不行的,会提示md5不匹配。
  2. 不同版本的OpenCV对应的 opencv_ffmpeg.dll 等缺失文件的 md5 签名是不一样的

4.3 mingw32-make报错

如果是多线程报错,可以考虑减少线程数再编译
其他可参考:https://blog.csdn.net/lx0307/article/details/84838422
https://blog.csdn.net/wangguang_/article/details/106359310

4.4 MinGW编译OpenCV到vs_version.rc.obj处出错

  • 报错
modules\core\CMakeFiles\opencv_core.dir\build.make:402: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/src/directx.cpp.obj' failed
mingw32-make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/src/directx.cpp.obj] Error 1
mingw32-make[2]: *** Waiting for unfinished jobs....
[ 33%] Built target IlmImf
CMakeFiles\Makefile2:2196: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed
mingw32-make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
Makefile:180: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

4.5 modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_dshow.cpp.obj’ failed

  • 报错
modules\videoio\CMakeFiles\opencv_videoio.dir\build.make:187: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_dshow.cpp.obj' failed
mingw32-make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_dshow.cpp.obj] Error 1
CMakeFiles\Makefile2:2867: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' failed
mingw32-make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
Makefile:161: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
  • 解决
    在opencv的源码文件cap_dshow.cpp中添加
#define STRSAFE_NO_DEPRECATE
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值