一、准备工作:

(1)在OpenCV官网下载3.4.2版本(注意选择Win pack),https://opencv.org/releases.html。

(2)下载Contrib模块,https://github.com/opencv/opencv_contrib/releases/tag/3.4.2(记住opencv是什么版本,contrib就下什么版本,必须对应否则编译会出问题)

(3)下载CMake,下载后直接安装即可。https://cmake.org/download/

二、编译生成

Opencv用于Mingw的版本编译没有VS那么顺利,总是有各种错误,而且不同版本还有不同的出错情况,我参考了其他博主的文章,但是可能因为版本不同,在我自己进行编译的时候还是出错了,

最后在stackoverflow和opencv的提问平台上找到了一些解决方案,终于成功编译出来,所以如果不是使用3.4.2版本的可能按照我的方法不一定能够完全编译通过。

如果遇到编译出错的不妨到Opencv官网的提问网页看看有没解决的方案,这里有专门关于QT的疑难杂症解答:

http://answers.opencv.org/questions/scope:all/sort:activity-desc/tags:qt/page:1/

(1)用记事本打开source\cmake\OpenCVCompilerOptions.cmake,找到  add_extra_compiler_option(-Werror=non-virtual-dtor)将其删除。

(2)打开source\modules\videoio\src\cap_dshow.cpp,在#include "precomp.hpp"后面增加#define STRSAFE_NO_DEPRECATE

(3)打开Ccmake-gui.exe

(4)点击Browse Source选择你解压出来的OpenCV Source目录,点击Browse Build选择一个目录用来存放生成的工程文件(自己创建一个目录),

(5)点击Configure,选择MinGW Makefiles,然后点击Finsh,然后CMake开始生成工程,注意此过程会从网上下载ffmpeg和ippicv两个库,所以需要联网。

(6)编译选择

1.如果你想编译成静态库,那么把BUILD_SHARED_LIBS的钩去掉,这样就不用每次发布程序都带一堆动态库。

2.如果你想减少库文件,可以勾选BUILD_opencv_world,这样很多库会集成到opencv_world342.lib,那么你每次新建工程就不需要填写一大堆库链接了,但是可能也会把很多没用到的库包含进来

增加程序体积,所以我没有勾选,还是保持原来的。

3.如果你已经下载了contrib模块,解压模块,然后设置OPENCV_EXTRA_MODULES_PATH指向contrib的modules目录。如果你没下载这个模块,就不用做这一步了,工程照样能够正常编译。

4.勾选WITH_QT

5.勾选WITH_OPENGL

6.勾选ENABLE_CXX11,这个版本用到了c++11的语法。

7.去掉WITH_MSMF,这个在VS中才需要勾选,QT版本不用勾选

(7)生成项目

选择完毕再次点击configure按钮,执行完毕还有红字则继续点击configure直到全部变成白色,然后点击Generate。

看到Configuring done、Generating done就表示已经搞定了。

(8)编译工程

1.打开cmd,进入到build目录。

2.输入mingw32-make,开始编译,如果没有出错,进度走到了100%,那么恭喜你编译成功了。

3.输入mingw32-make install

生成完成在build目录下会生成一个install的目录。

(9)测试

1.新建一个QT工程,在其.pro文件中添加include和lib目录,注意添加库的时候是有先后顺序之分的,

如果顺序不对会有很多undefined reference的错误提示,另外除了OpenCV本身的库以外可能还需要附加

其他的库,比如gdi,有用到摄像头要添加vfw等。

INCLUDEPATH += "F:\opencv\build_qt\install\include"
INCLUDEPATH += "F:\opencv\build_qt\install\include\opencv"
INCLUDEPATH += "F:\opencv\build_qt\install\include\opencv2" LIBS += -LF:\opencv\build_qt\install\x86\mingw\staticlib -lopencv_imgcodecs342 \
-lopencv_imgproc342 \
-lIlmImf \
-llibjasper \
-llibjpeg-turbo \
-llibpng \
-llibtiff \
-llibwebp \
-lopencv_core342 \
-lopencv_highgui342 \
-lopencv_img_hash342 \
-lopencv_rgbd342 \
-lzlib LIBS += -lGdi32 -lcomdlg32

2.添加测试代码

#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
void MainWindow::on_pushButton_clicked()
{
Mat mat;
mat = imread("home.jpg",CV_LOAD_IMAGE_UNCHANGED);
if (mat.empty())
return;
imshow("MyWindow", mat);
waitKey();
destroyWindow("MyWindow");
}

3.运行程序

QT5.10+MinGW+OpenCV3.4.2编译的更多相关文章

  1. OpenCV-3.4.2基于Qt-5.10.1的编译

    OpenCV-3.4.2基于Qt-5.10.1的编译 由于本人在使用CMake和MinGW编译OpenCV是遇到了很多问题,在这里记录下来.至于所需软件的安装和相应环境变量的设置,网上有很多详细的教程 ...

  2. 详解QT5.10.0搭载OpenCV3.4.0环境配置步骤说明

    一.准备工作: 1下载Qt5.10.0 和 Qt Creator 4.5.0软件(http://download.qt.io/official_releases/qt/) 2.下载opencv3.40 ...

  3. WIN10 64bit + QT5.10.0(MinGW3.5.0) + OpenCV3.4.1 无痛安装、配置

    安装QT和配置MinGW 官方下载qt-opensource-windows-x86-5.10.0.exe 正常步骤安装QT5.10.0,安装过程选择自带的MinGW3.5.0编译器即可. 打开QtC ...

  4. Qt5.10.1 在windows下vs2017静态编译

    1.在计算机上安装python库和perl库(因为后续的静态编译需要用到这两种语言),可以在命令行敲击“python”和“perl -v”检查是否安装成功. 2.修改msvc-desktop.conf ...

  5. VS2017 编译 QT5.10.1 X64位 静态库 MT

    参考文章 https://blog.csdn.net/Devout_programming/article/details/78827112 准备工作* Supported compiler (Vis ...

  6. qt5.10.1编译记录

    qt版本更新比较快,不知道选哪个版本合适,故选择一个较新版本的. 平台imx6    +    linux4.1.16   +   qt5.10.1 采用明远智睿提供的编译器:fsl-imx-fb-g ...

  7. windows下使用mingw和msvc静态编译Qt5.15.xx

    windows下使用mingw和msvc静态编译Qt5.15.xx 下载并安装相关依赖软件 Python version 2.7 https://www.python.org/downloads/ ( ...

  8. Win7下安装VS2017、安装Qt5.10.1以及在VS2017添加qt插件

    一.安装VS2017 1.下载VS2017 进入vs下载官网https://www.visualstudio.com/zh-hans/downloads/,选择所需要的vs版本,进行在线安装. 2.安 ...

  9. 回归Qt——写在Qt5.10发布之日

    今天偶然看到一条关于Qt5.10发布的消息,发现Qt经历了诺基亚风波之后发展得依然良好,感到很欣慰.回头看上次关注Qt技术还是2011年,那时候用Qt4.7做一个小项目,对于一个写Win32界面和MF ...

随机推荐

  1. KVM-virsh常用命令

    virsh list #在线VM virsh list --all #所有VM virsh start #开机 virsh shutdown #软关机 virsh destroy #强制关机 virs ...

  2. mysql 查询今天,昨天,上个月sql语句

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天Select * FROM 表名 Where TO_DAYS( NOW( ) ...

  3. Linux——查询服务器公网IP

    前言 服务器查看IP,十分简单,但是如何查看公网IP呢? 步骤 网站:http://www.cip.cc/ 命令行查询(详细): UNIX/Linux: #curl cip.cc Windows: & ...

  4. LINUX部署JAVA项目

    Tomcat 应用服务器搭建好 安装 tomcat 所需依赖或工具软件 sudo yum -y update sudo yum -y install wget java unzip 使用 wget 下 ...

  5. [Javascript] Keyword 'in' to check prop exists on Object

    function addTo80(n ) { + n; } function memoizedAddTo80 (fn) { let cache = {}; return (n) => { /*k ...

  6. XA 事务

    4.11.3 什么是XA 事务? <数据库程序员面试笔试宝典>第4章数据库基础,本章主要介绍数据库基础部分的面试题,比较适合应届毕业生,也适合由其他岗位转数据库岗位的人员.本节为大家介绍什 ...

  7. Dart和JavaScript对比小结

    作为一名web前端来入门dart,新语言和我们熟悉的js有所差异,写dart的过程中容易受到原有思维的影响,这里把dart和js做一个对比总结,方便查找和熟悉. 变量声明 var 关键字 dart和j ...

  8. 1、kafka概述

    一.关于消息队列 消息队列是一种应用间的通信方式,消息就是是指在应用之间传送的数据,它也是进程通信的一种重要的方式. 1.消息队列的基本架构 producer:消息生产者. broker:消息处理中心 ...

  9. C博客作业02—循环结构

    0.展示PTA总分(0----2) 截图展示2次题目集:单循环和嵌套循环题目集,排名分数截图. 1.本章学习总结(2分) 1.1 学习内容总结 整理这两周学习主要知识点,并能对每个知识点介绍简单案例或 ...

  10. According to TLD or attribute directive in tag file, attribute items does not accept any expressions

    <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>报错 <%@ tagl ...