写这篇文章的初衷,学习C++也有一段时间了,Qt和OpenCV也简单的应用过,但这些之间的配置方法网上不同的文档真的是千差万别,实现的方式也是多种多样,这篇文章记录下自己实现的方式。
参考的书籍是《OpenCV3和Qt5计算机视觉应用开发》,一个伊朗的视觉工程师的写的。
1.前期准备
安装好VS2015,Qt5.9.1,CMake3.18.5。解压好opencv3.3.0。注意环境变量的配置。
CMake如果是exe安装文件,直接安装,安装过程中注意勾选“Add Cmake to the system PATH for all users”,意思是安装时会自动添加环境变量。
CMake如果是zip压缩文件,直接解压,需要手动添加环境变量。路径是截止到bin为止,例如我的cmake-gui.exe放在了“C:Program Files (x86)cmake-3.18.5-win64-x64in”,那么环境变量就是它。
opencv3.3.0解压位置是C:devopencv,Qt安装位置是C:QtQt5.9.1。环境变量如下:
2.编译后的文件要存放到什么位置,一般是opencv下的opencv_build文件夹,区别下opencv解压后的build文件夹
点击Finish后,要把BUILD_opencv_world的勾勾上,再次Configure,完事后Generate。
3.VS编译OpenCV.sln
用VS2015打开C:/dev/opencv/cmakeBuildx64下的OpenCV.sln,在这里有两种方式
3.1 菜单栏中《生成》《批生成》,这个生成很耗时,至少十几分钟,但生成的是全部的opencv文件
3.2 在解决方案资源管理器中选择“CMakeTargets“下的“INSTALL“,右键“仅用于项目“、“仅生成INSTALL(B)“ 这种是我从别的地方看来的,生成时在我的电脑上报错。
我还是用3.1中的生成方式,不过只勾选了INSTALL的Debug|x64,也得生成好一会。事后如果需要Release版本,也可以再次生成,不过不要勾选已生成过的。
4.添加环境变量C:devopencvcmakeBuildx64installx64vc14in到Path
5.制作Qt的PRI文件
PRI文件放在C:devopencv路径下,文件名为opencvx64.pri。注意笔者生成的是64位的。
INCLUDEPATH += C:/dev/opencv/cmakeBuildx64/install/include Debug: {LIBS += -lc:/dev/opencv/cmakeBuildx64/install/x64/vc14/lib/opencv_world330d} Release: {LIBS += -lc:/dev/opencv/cmakeBuildx64/install/x64/vc14/lib/opencv_world330}
6.编写测试Qt程序验证
6.1 创建Qt时选择MSVC2015_64
6.2 在pro文件最下方写上这句话
include(C:/dev/opencv/opencvx64.pri)
6.3 main.cpp文件代码如下,代码中的路径要写上图片的路径
#include "mainwindow.h" #include <QApplication> #include "opencv2/opencv.hpp" using namespace cv; int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); Mat image=imread(""); imshow("Output",image); return a.exec(); }
7.构建-->>执行qmake-->>运行,是否成功,在此一举,反正我的是成功了。就是因为我新建的qt没有qmake一下,差不多用一上午的时间去查看各种编译的文档,后来qmake了一下,就成功了。
记得一定要qmake一下,不然可能会报错。
8.在生成测试过程中遇到Qt无法运行rc.exe的错误,解决方案如下。
8.1 32位的程序 C:Program Files (x86)Windows Kits10in10.0.18362.0x86中的rc.exe和rcdll.dll拷贝到C:Program Files (x86)Microsoft Visual Studio 14.0VCin(VS2015的安装目录下面)
8.2 64位的程序 C:Program Files (x86)Windows Kits10in10.0.18362.0x64中的rc.exe和rcdll.dll拷贝到C:QtQt5.9.15.9.1msvc2015_64in(Qt的安装目录下面)