三、Qt配置opencv环境(详细,简易)
文章目录
软件 | 网盘链接 |
---|---|
Qt5.13.2 | 链接:https://pan.baidu.com/s/12koMqoh1UauwgFCC_gmn5Q 提取码:qmlb |
cmake3.11.1 | 同上 |
Opencv3.4.9 | 同上 |
路径请不要用中文! 路径请不要用中文! 路径请不要用中文!
3.1 软件准备
-
Qt5 (Qt官网下载https://download.qt.io/archive/qt/):选择版本:5.13.2
-
cmake(cmake官网下载https://cmake.org/files/):选择版本:3.11.1(不做版本要求)
-
OpenCV(OpenCV官网下载https://opencv.org/releases):选择版本:3.4.9
3.2 Qt安装
-
双击运行qt-opensource-windows-x86-5.13.2.exe程序,
-
填写邮箱密码(如果没有邮箱密码,可以先去Qt官网注册一个)
-
选择安装目录:(不要有中文)
-
选择Qt安装组件:
Qt 5.13.2 MinGW 7.3.0 64-bit Sources Developer and Designer Tools MinGW 7.3.0 64-bit
-
其他默认安装
-
添加环境变量到系统:在系统的Path中新增如下两条环境变量(Qt安装路径按自己实际修改)
3.3 cmake安装
-
将cmake-3.11.1-win64-x64.zip解压到D盘路径
-
添加环境变量到系统
3.4 opencv安装
-
运行 opencv-3.4.9-vc14_vc15.exe 程序(其本质是一个压缩包,运行是对其解压)
-
解压时填写路径,(我解压到D盘,所以填写D:\)
-
会在 D:\opencv 生成如下源码:其中build为编译后Windows环境下编译好的可执行文件,sources为未编译过的源代码。
build文件只能在vs中使用,不能在Qt中使用,如果要在Qt中使用Opencv,需要从新编译opencv源码
所以下面我们通过cmake重新编译opencv源码
3.5 cmake配置opencv
-
打开D:\cmake-3.11.1-win64-x64\bin\cmake-gui.exe
-
填写信息
Where is the source code:选择OpenCV解压的源文件文件夹位置;
Where to build the binaries:选择自定义的空文件夹用于保存生成对象 (不要有中文)
-
填写完成,点击左下角Configure按钮
-
选择MinGW编译器
-
点击NEXT按钮,选择Qt里面的gcc和g++编译器路径(点击…去重新选择一下,不然可能会报错)
-
点击finish后即会开始配置,配置需要几分钟左右,等待配置结束出现如下界面
-
修改配置如下:
ENABLE ENABLE_CXX11(选中) WITH WITH_OPENGL(选中) WITH_QT(选中) WITH_IPP(不选)
-
修改完点击Configure,配置完成会出现如下界面
-
再次点击Configure,配置完成会出现如下界面:
-
如下图所示,去掉CMAKE的Debug,修改为如下
CMAKE CMAKE_CONFIGURATION_TYPES Release
-
修改完再次点击Configure:
-
点击Generate,等待配置结束
3.6 编译安装opencv
-
打开CMD窗口,进入生成OpenCV目标文件的文件夹(window10可以使用powershell)
cd D:\opencv\install
-
使用下面命令开始编译opencv,需要20分钟左右
mingw32-make -j 8
其中, -j 8 代表多核编译
注意:编译过程中如果出现错误,可先看后面常见错误章节。
-
编译完成
-
编译完成之后,输入如下指令安装
mingw32-make install
-
安装完成如下
-
编译完会在,D:\opencv\install\中又生成一个install文件夹
-
将编译生成的路径D:\opencv\install\install\x64\mingw\bin添加到环境变量中(Qt才能调用到opencv)
3.7 Qt测试opencv代码
-
创建qt工程
-
选择路径(一定不能是中文,否则qt报错)
-
其他默认选择
-
在Qt工程的pro文件添加如下内容(路径根据自己实际修改)
#若将D:/opencv/install/install/include添加到环境变量,下面INCLUDEPATH这三行可以不写 INCLUDEPATH += D:/opencv/install/install/include/opencv \ D:/opencv/install/install/include/opencv2 \ D:/opencv/install/install/include LIBS += -L D:/opencv/install/install/x64/mingw/lib/libopencv_*.a #添加环境变量之后可以不使用绝对路径 #LIBS += -L libopencv_*.a
-
修改Qt工程的main.cpp文件如下,(注意自己图片路径)
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include <opencv2/objdetect/objdetect.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main() { Mat img=imread("F:/add2.jpg"); //读入一张图片 cvNamedWindow("test"); //创建一个名为"蜡笔小新"的显示窗口 imshow("test", img); //在窗口中显示图像 waitKey(10000); //延时10000ms后关闭窗口 return 0; }
3.8 编译常见错误
1、在执行mingw32-make的时候出现如下错误
找到上图提醒的文件D:\opencvSource\modules\core\CMakeFiles\opencv_core.dir\build.make
打开build.make,定位到1339行
修改"D:\Program Files\mingw64\bin\windres.exe"
为 “D:\Qt\Tools\mingw530_32\bin\windres.exe”(自己Qt安装目录下的TooLs\mingw530_32\bin\windres.exe)
2、该错误与上面相似,
找到上图提醒的文件D:\opencvSource\modules\imgproc\CMakeFiles\opencv_imgproc.dir\build.make
打开build.make,定位到1166行
修改"D:\Program Files\mingw64\bin\windres.exe"
为 “D:\Qt\Tools\mingw530_32\bin\windres.exe”(自己Qt安装目录下的TooLs\mingw530_32\bin\windres.exe)
3、错误如下图
解决方法:在cmake里面找到OPENCV_ENABLE_ALLOCATOR_STATS或者在search里面搜索,然后把后面的勾选去掉,接着Configure和Generate后,接着在cmd窗口中mingw32-make即可继续编译
4、错误如下图
在**opencv源码**中找到提示错误的C:\Users\29017\Downloads\Compressed\opencv-3.4.8\modules\videoio\src\ cap_dshow.cpp 文件
打开cap_dshow.cpp
在#include "precomp.hpp"下面添加
#define STRSAFE_NO_DEPRECATE
5、错误如下图
在**opencv源码**中找到提示错误的modules/photo/CMakeFiles/opencv_test_photo.dir/test/test_hdr.cpp文件
在#include "test_precomp.hpp"下面添加
#include <sys/time.h>