QT5.10+MinGW+OpenCV3.4.2编译
一、准备工作:
(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编译的更多相关文章
- OpenCV-3.4.2基于Qt-5.10.1的编译
OpenCV-3.4.2基于Qt-5.10.1的编译 由于本人在使用CMake和MinGW编译OpenCV是遇到了很多问题,在这里记录下来.至于所需软件的安装和相应环境变量的设置,网上有很多详细的教程 ...
- 详解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 ...
- 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 ...
- Qt5.10.1 在windows下vs2017静态编译
1.在计算机上安装python库和perl库(因为后续的静态编译需要用到这两种语言),可以在命令行敲击“python”和“perl -v”检查是否安装成功. 2.修改msvc-desktop.conf ...
- VS2017 编译 QT5.10.1 X64位 静态库 MT
参考文章 https://blog.csdn.net/Devout_programming/article/details/78827112 准备工作* Supported compiler (Vis ...
- qt5.10.1编译记录
qt版本更新比较快,不知道选哪个版本合适,故选择一个较新版本的. 平台imx6 + linux4.1.16 + qt5.10.1 采用明远智睿提供的编译器:fsl-imx-fb-g ...
- windows下使用mingw和msvc静态编译Qt5.15.xx
windows下使用mingw和msvc静态编译Qt5.15.xx 下载并安装相关依赖软件 Python version 2.7 https://www.python.org/downloads/ ( ...
- Win7下安装VS2017、安装Qt5.10.1以及在VS2017添加qt插件
一.安装VS2017 1.下载VS2017 进入vs下载官网https://www.visualstudio.com/zh-hans/downloads/,选择所需要的vs版本,进行在线安装. 2.安 ...
- 回归Qt——写在Qt5.10发布之日
今天偶然看到一条关于Qt5.10发布的消息,发现Qt经历了诺基亚风波之后发展得依然良好,感到很欣慰.回头看上次关注Qt技术还是2011年,那时候用Qt4.7做一个小项目,对于一个写Win32界面和MF ...
随机推荐
- 项目Alpha冲刺--9/10
项目Alpha冲刺--9/10 作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合 ...
- EF 多数据库切换配置(MSSQL/MySql)
<?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访 ...
- 自定义express中间件
const http = require('http') class LikeExpress { constructor() { this.middleList = [] this.routes = ...
- Django rest_fram_work API View序列化
APIview 单表的GET和POST: 视图 查询所有: class PublishView(APIView): # 查询数据 def get(self, request): # first inq ...
- python3 爬虫继续爬笔趣阁 ,,,,,,,
学如逆水行舟,不进则退 今天想看小说..找了半天,没有资源.. 只能自己爬了 想了半天.,,,忘记了这个古老的技能 捡了一下 import requests from bs4 import Beaut ...
- tensorflow2.0 学习(三)
用tensorflow2.0 版回顾了一下mnist的学习 代码如下,感觉这个版本下的mnist学习更简洁,更方便 关于tensorflow的基础知识,这里就不更新了,用到什么就到网上取搜索相关的知识 ...
- learning java 文件锁
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; i ...
- Nodejs中的模块系统
一.模块化的定义 ①具有文件作用域 ②具有通信规则:加载和导出规则 二.CommonJS模块规范 1.nodejs中的模块系统,具有文件作用域,也具有通信规则,使用require方法加载模块,使用ex ...
- 【字符串】后缀数组SA
后缀数组 概念 实际上就是将一个字符串的所有后缀按照字典序排序 得到了两个数组 \(sa[i]\) 和 \(rk[i]\),其中 \(sa[i]\) 表示排名为 i 的后缀,\(rk[i]\) 表示后 ...
- 前端微信小程序仿菜谱精灵
需求描述及交互分析 设计思路和相关知识点 底部标签导航设计 幻灯片轮播效果设计 菜谱专题列表显示设计 菜谱专题详情设计 菜谱分类设计 幻灯片轮播效果动态切换展示一些美食图片 若本号内容有做得不到位的地 ...