之前有过对OpenCV3.4.2+VS2015编译及环境搭建,今天使用OpenCV3.4.3+QtCreator5.9.4编译及环境搭建。编译过程比较曲折,大部分编译错误都可以查得到解决方法,也遇到了Google无果的错误,好在最后还是解决了,特此记录。

编译环境

  • win10-64bit
  • Qt5.9.4
  • MinGW-5.3.0-32bit
  • CMake-3.12.1
  • OpenCV-3.4.3

相关软件下载地址

Qt下载地址:http://download.qt.io/archive/qt/5.9/
CMake下载地址:https://cmake.org/download/
OpenCV下载地址:https://opencv.org/releases.html#

此处下载安装包(Win pack)和源码(Sources)均可,配置时选择的目录不同。

其它地址

OpenCV官网:https://opencv.org/
OpenCV官方教程:https://docs.opencv.org/3.4/d9/df8/tutorial_root.html
速查表:https://docs.opencv.org/3.0-last-rst/opencv_cheatsheet.pdf


添加环境变量

  • H:\cmake\bin
  • D:\Qt\Qt5.9.4\5.9.4\mingw53_32\bin
  • D:\Qt\Qt5.9.4\Tools\mingw530_32\bin

OpenCV编译步骤

在opencv安装的同级目录下创建文件夹buildOpencv,用来存放构建文件及生成的库。

Qt官方编译步骤文档:https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows

编译前配置

1、打开 cmake-gui,设置源码和生成路径:

  • Where is the source code :H:\opencv3.4.3\opencv\sources (opencv安装目录)
  • Where to build the binaries:H:\opencv3.4.3\buildOpencv (新建的文件目录)

然后点击Configure,在弹框里选择编译器,点击Next,如下图:

如果下载的是opencv源码而非安装包,解压后里面没有sources目录,上图第一项设置Where is the source code :H:\opencv3\opencv-3.4.3即可。

2、在弹窗里设置编译器目录,然后点击Finish:

D:\Qt\Qt5.9.4\Tools\mingw530_32\bin\gcc.exe
D:\Qt\Qt5.9.4\Tools\mingw530_32\bin\g++.exe

3、点击Finish之后需要等待一段时间,等到进度条读完之后,开始配置:

勾选 WITH_QT
勾选 WITH_OPENGL(默认已勾选)

勾选之后点击Configure,等到进度条读完之后,再次配置:

  • Qt5Concurrent_DIR --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Concurrent
  • Qt5Core_DIR           --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Core
  • Qt5Gui_DIR             --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Gui
  • Qt5Test_DIR            --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Test
  • Qt5Widgets_DIR      --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Widgets
  • Qt5OpenGL_DIR     --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5OpenGL

CMAKE_BUILD_TYPE --> ***Release***(设置为Release后编译完成只会生成release库,需要debug库的话等到编译完成将此处更改为Debug,重新执行下面的步骤则会在生成的release库的目录下生成debug库)
点击右上角的Add Entry,然后在弹窗中输入:

  • QT_MAKE_EXECUTABLE
  • FILEPATH
  • D:\Qt\Qt5.9.4\5.9.4\mingw53_32\bin\qmake.exe

然后点击OK- Generate ,进度条读完之后,配置完成。

更多配置提示

上一步已经配置完成,但是编译过程中会遇到编译错误,如果希望一次编译成功,可以进行下面的设置。或者直接在上一步Generate之后就进行编译,等到编译出现错误时再来配置。

  • 不勾选 WITH_IPP
  • 不勾选与TESTS有关的选项
  • 不勾选 ENABLE_PRECOMPILED_HEADERS
  • 不勾选WITH_MSMF
  • 勾选 ENABLE_CXX11
  • 编辑H:\opencv3.4.3\opencv\sources\modules\videoio\src\cap_dshow.cpp文件,在约110行左右#include "DShow.h"上面添加#define NO_DSHOW_STRSAFE,#define STRSAFE_NO_DEPRECATE,如下图:

编译命令

在构建目录buildOpencv下按shift+右键,打开终端,然后执行编译命令:

mingw32-make 或 mingw32-make -j 8

注意:右侧带参数的命令是多线程编译,编译速度会快很多,但是使用多线程编译前最好先重启电脑或者关闭不必要的软件保证内存和CPU的占用较低状态,否则很有可能编译失败,编译失败的话也没关系可以改为单线程继续编译。

mingw32-make install

编译完成(100%)之后执行安装命令,会在相关目录下生成库文件。

编译错误

编译过程中可能会遇到下面的错误:

  1. 多线程编译错误,18%左右

解决:改为使用mingw32-make命令继续编译

  1. C++11错误,25%左右

解决:打开 cmake-gui ,勾选 ENABLE_CXX11,然后重新Configure-Generate-mingw32-make

  1. cap_dshow.cpp文件出错,43%左右

解决:
编辑H:\opencv3.4.3\opencv\sources\modules\videoio\src\cap_dshow.cpp文件,在约110行左右#include "DShow.h"上面添加#define NO_DSHOW_STRSAFE,然后重新Configure-Generate-mingw32-make。编译debug版本出现该错误时在cap_dshow.cpp文件中添加#define STRSAFE_NO_DEPRECATE

  1. cap_msmf.cpp文件出错,43%左右

解决:打开 cmake-gui ,不勾选WITH_MSMF,然后重新Configure-Generate-mingw32-make

生成的OpenCV库

编译完成后,生成的库在H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin目录下

Qt+OpenCV测试

添加OpenCV库到环境变量

添加 H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin到系统环境变量(Path)中

测试代码

在.pro文件中添加头文件路径和库路径:

INCLUDEPATH += H:\opencv3.4.3\buildOpencv\install\includeLIBS += H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_core343.dll \H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_highgui343.dll \H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_imgcodecs343.dll \H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_imgproc343.dll \H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_features2d343.dll \H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_calib3d343.dll

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);// read an image,Mat是基础图像容器cv::Mat image = cv::imread("H:/test_rec/qt.jpg", 1);// create image window named "My Image"cv::namedWindow("My Image");// show the image on windowcv::imshow("My Image", image);
}MainWindow::~MainWindow()
{delete ui;
}

注意:如果构建项目时使用影子构建(即构建目录与项目目录非同一目录),则需要将.pro里引入的库拷贝到可执行文件所在目录,否则运行程序会异常结束(因为找不到库),如果没有使用影子构建则可以直接运行。

运行结果

相关内容

OpenCV专栏

OpenCV3.4.2+VS2015编译及开发环境搭建

OpenCV3.4.3+Qt5.9.4(QtCreator)开发环境搭建相关推荐

  1. vs2013+opencv3.1.0+qt5.3.5图像算法开发环境

    vs2013+opencv3.1.0+qt5.3.5图像算法开发环境 – 文章目录 vs2013+opencv3.1.0+qt5.3.5图像算法开发环境 前言 一.vs2013 二.opencv3.1 ...

  2. Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤

    Qt | Qt For Android.Qt5.14.2安卓开发环境搭建详细步骤 目录 Qt | Qt For Android.Qt5.14.2安卓开发环境搭建详细步骤 1.简介 2.软件下载 1.J ...

  3. QGC4.1.2二次开发(1)--Qt5.12.6 andorid开发环境搭建

    开发环境介绍: QGC版本: 4.1.2 Qt版本: 5.12.6(QGC要求) windows平台开发:vs2017 andorid平台: JDK Java SE 8u281        ando ...

  4. QT5.7.0 arm开发环境搭建

    参考文章http://blog.csdn.net/singleroot/article/details/54344873 1.创建项目 创建一个c++项目,但是发现平台没有arm的平台,需要我们自己添 ...

  5. win10平台下VS2019+Qt5.14.2开发环境搭建

    Qt,是一个跨平台的C++应用程序开发框架,广泛用于开发GUI程序. 前情提要: 之前电脑中安装了Qt5.12.3版本,但是呢,只有MingW64位的编译版本,只能在Qt Creator中去编译,不能 ...

  6. Qt QtCreator 安卓开发环境搭建

    踩坑 我的qt是使用在线安装工具安装的,Qt版本使用的是5.15.2,QtCreator版本9.0.2 在网上很多教程都是如下步骤 1.安装qt 2.安装jdk 3.安装android-sdk 4.安 ...

  7. Ubuntu22+ROS2+QtCreator+Ros_Qtc_Plugin开发环境搭建

    Ubuntu22+ROS2+QtCreator+Ros_Qtc_Plugin开发环境搭建 1. 写在前面 最近重装了ubuntu22.04,被告知ubuntu22已经不支持ROS1了,想着ROS2毕竟 ...

  8. qt工程在linux系统里颜色显示错误_【飞凌嵌入式RK3399开发板试用体验】+QT开发环境搭建测试(二)...

    作者:飞扬的青春 在拿到开发板之后,已经体验了Android操作系统,接下来就是体验Linux下的开发,本次以QT的一个小案例来测试下. 首先是自己先搭建了一个Ubuntu18.04的虚拟机,使用真机 ...

  9. 开发板qt移植和交叉开发环境搭建学习笔记

    tslib移植 准备工作   开发板有uboot 搭建tftp服务器,开发板可通过服务器下载内核并启动: nfs工具,开发板可通过nfs工具加载到主机(电脑)的rootfs: 触摸屏可使用,在cat触 ...

最新文章

  1. Facebook 重金挖不到,ASP.NET 之父,微软大神“红衣教主”传奇
  2. ubuntu14 备份
  3. C#开发学习——web服务器端控件
  4. anguarjs 图片预览_Text to Image Converter(文字转图片软件)下载-Text to Image Converter(文字转图片软件)v1.5绿色版下载...
  5. c语言的多线程,如何用C语言实现多线程
  6. [GXOI/GZOI2019]旧词——树链剖分+线段树
  7. 物联网第一台设备是烤面包机?
  8. ifix如何设画面大小_天涯明月刀手游研发揭秘:如何做出有“豪华感”的国风MMO大世界?...
  9. C# 在自定义的控制台输出重定向类中整合调用方信息
  10. Postman用法简介-Http请求模拟工具
  11. HDU 5176 The Experience of Love 带权并查集
  12. 头像裁剪框html css,CSS3 clip-path实现的用户头像裁剪效果
  13. scrum 12.8
  14. CNN卷积神经网络总结
  15. 5.2g信道用哪个好_记工记账软件哪个比较实用?建筑工地用哪个记工记账软件好?...
  16. Bean复制的几种框架性能比较(Apache BeanUtils、PropertyUtils、Spring BeanUtils、Cglib BeanCopier)
  17. 软考高级系统架构设计师系列论文四十九:论微服务架构及其应用
  18. 利用ACC控制酷狗音乐
  19. opengl 五角星画法 源代码
  20. 计算机组成原理第一章作业,计算机组成原理第一章习题答案(作业).doc

热门文章

  1. 1.5万字详述 | 全开源:python写小游戏+AI强化学习与传统DFS/BFS控制分别实现
  2. 从 json 文件到炫酷动画 - Lottie 实现思路和源码分析
  3. 【编译原理笔记10】语法制导翻译:在递归预测过程中进行翻译,L属性定义的自底向上翻译
  4. 各种好用的开源库。快点进来,包你喜欢~^_^
  5. Python3 有序字典—OrderedDict()
  6. sql SELECT时的with(nolock)选项说明
  7. 【数据结构笔记18】堆中的路径与C实现(堆元素到根的路)径)
  8. Hadoop Yarn事件处理框架源码分析
  9. 还在死磕 Ajax?那可就 out 了!
  10. dsc linux 软件安装_介绍一个linux各软件安装教程网站linuxize