1、背景需求
在win10系统下安装配置opencv环境,并用qt开发相关软件。但是目前系统安装有VS2017和基于MSVC编译器的opencv库,不能直接用。
2、问题:
Qt 安装有mingw编译器,不能调用基于MSVC编译器的opencv库。
3、解决办法:
编译基于mingw编译器的opencv库,直接利用qt调用opencv,编译opencv又慢错误又多;
重新安装带有msvc编译器的qt软件,然后利用qt调用MSVC的opencv,只需要重新安装qt软件;
综合考虑,选用第二种方法,分析如下:
3.1 msvc(2017版):
Opencv包中包含有vc15(对应2017)其中就有对应的库;
①在Qt工程文件右键->添加库->外部库,其中库文件:引入build/x64/vc15/lib下的库,包含路径:引入build/include
②在.pro文件直接写(路径根据实际情况写):
INCLUDEPATH +=D:/openCV3.4.0/build/include
DEPENDPATH += D:/openCV3.4.0/build/include
③包含opencv包:#include<opencv2/opencv.hpp>,在工程文件处右键,重新编译、执行qmake即可使用
3.2 mingw:
需要用cmake编译opencv 包得到install中的.a文件,而且编译的过程极不顺畅,因为中间会需要两个不能download的文件,需要自行下载: opencv_videoio_ffmpeg_64.dll,opencv_videoio_ffmpeg.dll。
Cmake编译opencv推荐视频(亲测能成):
https://www.bilibili.com/video/BV1Za4y1v7ra
然后编译完成后就可以在qt中引用opencv了,但是运行时程序会异常崩溃 ,原因是找不到libopencv_world420.dll文件,这时需要在编译opencv后的文件夹下的: x64/mingw/bin目录下把这个文件复制到qt项目对应的debug版本或release版本目录下,然后运行成功。
4、解决步骤:
4.1 Qt安装配置
1)下载安装QT,安装的时候把两种编译器都选上,如下图:
2)安装调试工具因为MSVC2017的构建套件里面没有配置调试工具。
进入微软官网下载Win10 SDK: Win10 SDK下载地址。下载winsdksetup.exe,只选择 Debug for Windows的工具即可,其他都不选择,安装完成之后,QT就会自动进行MSVC的配置(最好重启一下电脑)
3)配置“构建套件”,如下图,直到kit没有黄色的感叹号,主要是“Debugger”一栏,自动选择就可以
4.2 Qt MSVC 配置opencv
1)首先编译基于mSVC 版的opencv4.5.4,并将opencv下vc15/bin添加到环境变量
2)使用opencv
工程右击选择“添加库”-外部库
填写相关内容,如下
Pro文件自动添加如下内容,即可
#win32:CONFIG(release, debug|release): LIBS += -LD:/opencv/opencv454/build/install/x64/vc15/lib/ -lopencv_world454
#else:win32:CONFIG(debug, debug|release): LIBS += -LD:/opencv/opencv454/build/install/x64/vc15/lib/ -lopencv_world454d
#INCLUDEPATH += D:/opencv/opencv454/build/install/include
#DEPENDPATH += D:/opencv/opencv454/build/install/include
5 问题及解决
出现问题“#include <opencv2/opencv.hpp>”在代码文件能补全上面的头文件,可是编译出现找不到上述文件的错误;或者出现“LNK1112: 模块计算机类型“X64”与目标计算机类型“x86”冲突”的错误,刚开始一直以为是opencv库的路径和qt编译器自身的问题,原来是因为opencv编译的是x64版本,使用的qt编译器是x86下32位的版本,最后将qt编译器选成64位并配置,则问题解决。