系统:windows10
Qt版本:
5.13.1
OpenCV版本:
3.4.3(与
4.1.1)
Qt安装
Qt下载 前往官网根据需要下载对应版本,由于Qt5.12.0版本之前只支持x86的编译器,5.12.0之后才加入x64的MinGW的编译器,故这边推荐5.12.0之后的版本,这边以5.13.1版本为例。 下载链接:http://download.qt.io/archive/qt/
2. Qt安装
运行将刚下载的exe文件 如下: 点击“Next”。登录Qt账户(以往可以直接“skip”,现在似乎必须登录) 先前有注册过Qt账户的直接输入邮箱密码登录;没有注册过的,直接在下方输入邮箱和密码注册登录,密码至少要包含“小写字母,大写字母,数字,符号”中的任意三种,点击“Next”。
点击“下一步”。
选择Qt安装路径 默认是C盘,软件比较大,不建议安装在C盘,自行修改安装路径。 安装组件选择 这也是安装中最重要的一步,后面配置不成功,很有可能是这边编译器选择的问题。 按下图勾选组件选项,这边选择MinGW 64位编译器。 由于个人工作与考核需要,同时勾选了MinGW 32位编译器。如果自己电脑已经装有VS的,可以自行再勾选MSVC编译器。其他组件根据个人开发需要自行勾选,点击下一步。 点击“agree”,一直点击“下一步”,直到最后点击“安装”,等待安装完毕。 至此,Qt安装完毕。
Qt下OpenCV运行环境配置
配置环境变量 打开“此电脑”,空白处右击选择“属性”,点击左侧“高级系统设置”,点击右下角“环境变量”,翻滚“系统变量”找到“Path”选项,双击编辑。 添加刚才Qt安装路径下的下面两个路径名,我这边为MinGW 64位路径,若配置MinGW 32位路径则将下面两条路径加入Path中。 D:\Qt5.13.1\5.13.1\mingw73_32\bin D:\Qt5.13.1\Tools\mingw730_32\bin 继续在刚才的Path中添加下图中OpenCV的路径(根据自己的OpenCV版本和文件存放路径添加,我这边使用的不同编译器下的OpenCV版本较多,MinGW x86编译器编译的OpenCV3.4.3版本添加样式如下图红框部分)。 一共是3个路径,至此环境变量配置结束。新建Qt工程 为操作方便,将下图中“开始”菜单栏中的Qt快捷方式拉至桌面;双击快捷方式运行Qt。 点击“New Project”。 选择“Qt Console Application”,点击“下一步”。 选择工程存放路径,点击“下一步”,继续点击“下一步”。 选择编译器类型,这边以MinGW 32位为例,点击“下一步”,直到点击“完成”,工程创建完毕。 配置OpenCV运行环境 点击右方的.pro文件,在如下位置加入下图中OpenCV的包含路径(这边根据自己OpenCV的存放路径修改,注意左斜杠和右斜杠)。
INCLUDEPATH
+= F
:/OpenCV
/OpenCV3
.4.3/opencv_3
.4.3_build_qt
/include\
F
:/OpenCV
/OpenCV3
.4.3/opencv_3
.4.3_build_qt
/include
/opencv\
F
:/OpenCV
/OpenCV3
.4.3/opencv_3
.4.3_build_qt
/include
/opencv2
LIBS
+= F
:/OpenCV
/OpenCV3
.4.3/opencv_3
.4.3_build_qt
/x86
/mingw
/lib
/libopencv_
*.dll
.a
若使用OpenCV4.0及以上版本,由于OpenCV4.0取消了所有的C语言接口部分,故路径配置不需要添加最后一级文件目录名为“opencv”的路径,即需要添加的路径如下:
INCLUDEPATH
+= F
:/OpenCV
/OpenCV4
.1.1/opencv_4
.1.1_build_qt
/include\
F
:/OpenCV
/OpenCV4
.1.1/opencv_4
.1.1_build_qt
/include
/opencv2
LIBS
+= F
:/OpenCV
/OpenCV4
.1.1/opencv_4
.1.1_build_qt
/x64
/mingw
/lib
/libopencv_
*.dll
.a
代码测试 输入以下代码并运行,成功显示出图片,则配置无误。
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv
;
using namespace std
;
int main()
{
Mat img
= imread("F:\\RM.png");
if(img
.empty())
{
cout
<< "can't read this image!" << endl
;
return 0;
}
imshow("image", img
);
waitKey(0);
return 0;
}
至此大功告成,耶!!!