由于研究项目需要,最近开始接触C++界面设计,关于“QT + OpenCV + MinGW在windows下配置开发环境”着实让人头疼,单次配置时间相当长,也十分不容易,本人第一次配置成功就花了两天,期间查找了许多帖子,现在整理出来一套完整配置方案,附加几个注意点,供大家参考。
一、为什么要选择QT
OpenCV库是一套全面而简洁的计算机视觉算法库,OpenCV主要由一些C及C++函数和类构成。在Windows平台上开发视觉算法时,Visual Studio IDE无疑是一款强大的工具软件,但是,如果要给我们的OpenCV视觉算法加上漂亮的用户界面,即GUI,将会变得有些麻烦。在Visual Studio中,可以将OpenCV与MFC相结合开发界面,然而,MFC太庞大,且涉及到多线性(Multi-Thread)、先进图形图像显示、跨平台等需求时,使用MFC开发OpenCV算法界面会变得让人抓狂(姑且这么说吧)。另一种技术,就是在Visual Studio中,我们在视觉解决方案中可以建立C#工程,通过C#构建界面,这里,Visual Studio自带强大的Blend界面设计工具,那么问题又来了:C#和C++语言体系不同,C#为解释型语言,C++为编译型语言,OpenCV本身为C++代码,二者在代码和数据交互上存在太多麻烦的转换,转换的过程浪费开发时间。
因此,涉及到本文的主要目的,即:在Qt中引入OpenCV库,将Qt擅长的界面和OpenCV擅长的视觉算法有机结合起来,从而让我们快速的进行项目的构建和开发。
二、下载必备软件
- QT SDK for Open Source C++ development on Windows(在google上搜索一下官方网站即可找到),QT官网提供开源软件,注册一下即可下载。
- OpenCV 2.4.10:可以到opencv官网( http://sourceforge.net/projects/opencvlibrary/files/opencv-win)选择最新的OpenCV版本,由于本人电脑本来就有opencv2.4.10,故选择此版本,安装之后的目录下面有源码和个版本的lib和dll,不过为避免出现问题,还是自己编译吧。
- Cmake
编译opencv需要用到CMake这个工具。
下载:https://CMake.org/download/
建议下载安装版的,这个可以自动加入系统环境变量。
2. 安装,选择第二个,为所有用户添加系统路径。之后Qt可以自动找到CMake
三、安装QT Creator
1. 下载:http://download.qt.io/archive/qt/5.8/5.8.0/
建议选择离线安装包,在线安装太慢,经常会安装失败。
选择MinGW版本。VS 版本还需要安装对应的VS,单独安装Qt 是不可用的,而MinGW版本自身带有MinGW。
建议下载最新版本,因为里面带的MinGW版本较高,如果MinGW版本比opencv需要的版本低会编译失败。
2. 安装:安装路径不能有空格,我安装在默认路径,然后一路NEXT。
四、下载OpenCV
下载opencv for Windows
https://opencv.org/releases.html
连接里头有OpenCV各个版本,建议不要下载最新版本,只要下载源码就行了。
如果编译失败,试试其他版本的opencv,MinGW版本要跟opencv版本对应才能编译成功。
五、通过Cmake对OpenCV进行配置和生成
第一行添加Opencv源代码路径,第二行为生成的minGW编译文件所在位置。
点击左下方的configure,会提示选择编译器,此处一定要选择"Specify native compilers",之前直接选取“Use default native compilers”,最后在配置完成,生成动态库后在QT中使用经常出错,后重新选择配置编译才可以正常使用。
此处选择的编译器一定要是在环境变量中的C和C++编译器。g++.exe和gcc.exe在QT安装目录下Tool\Mingw5.3.0文件夹下。
如果出现上图红色错误,检查一下相关文件路径是否出错,如果出错,改成相应路径即可,例如:CMAKE_INSTALL_PREFIX的路径为install的路径,再次点击左下方的configure,成功后,有两处需要更改。
上图选取的地方是CMake生成的configure类型,可以填入Debug和Release,这样生成的库文件就可以指出上面两种版本的编译。
另外必须要勾选下图中的 WITH_QT,WITH_OPENGL以使CMake编译出可以供Qt使用的库文件
至此,就可以点击generate进行生成了。
六、开始编译和安装
在完成以上所有步骤之后,打开控制台,进入生成的目录中。依次键入 mingw32-make 和 mingw32-make install ,如之前配置无误,程序就会依次开始编译和安装,下图依次为相应结果:
键入mingw32-make(下图为网络图片,若按照上面CMAKE的配置路径改成
之前设置的mingw编译路径和mingw32-make.exe相关路径即可。)
回车开始编译,编译时间较久。
当编译完成后键入上图路径(第一次键入的命令后加install打包编译文件,路径修改方法同上)。
打包过程速度很快。
至此,Opencv的QT库已经编译完成。
在QT工程文件中pro添加Opencv的头文件路径和库即可完成。
按照上图的方法修改成相应的路径(网络图片),但是会出现一些错误,什么错误我忘记了,记得解决方法是在(LIBS+=)后面加上(-I)。
之后在头文件中包含一下即可使用。