三、Qt配置opencv环境(详细,简易)
文章目录
- 三、Qt配置opencv环境(详细,简易)
- 3.1 软件准备
- 3.2 Qt安装
- 3.3 cmake安装
- 3.4 opencv安装
- 3.5 cmake配置opencv
- 3.6 编译安装opencv
- 3.7 Qt测试opencv代码
- 3.8 编译常见错误
软件 | 网盘链接 |
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>