这里编译的是最新版OpenCV3.4.3,编译过程比较曲折,大部分编译错误都可以查得到解决方法,也遇到了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,用来存放构建文件及生成的库。

编译前配置 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%)之后执行安装命令,会在相关目录下生成库文件。

编译错误

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

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

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

C++11错误,25%左右

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

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
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\include

LIBS += 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", );
// create image window named "My Image"
cv::namedWindow("My Image");
// show the image on window
cv::imshow("My Image", image);
} MainWindow::~MainWindow()
{
delete ui;
}

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

运行结果:

---------------------
作者:画茧自缚
来源:CSDN
原文:https://blog.csdn.net/zbw1185/article/details/82469496
版权声明:本文为博主原创文章,转载请附上博文链接!

Qt之CMake和MinGW编译OpenCV的更多相关文章

  1. Windows下利用CMake和VS2013编译OpenCV

    转载自:http://www.chengxulvtu.com/2014/03/19/windows_build-opencv-with-cmake-and-vs2013.html   获取OpenCV ...

  2. OpenCV使用CMake和MinGW的编译安装

    官方教程:https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows 软件环境: Qt:5.11 CMake-3.14.4 OpenCV-4.1. ...

  3. 在Windows下用MingW 4.5.2编译OpenCV 2.3.0

    需要的工具:1.安装QT SDK环境2.安装CMake for Windows3.OpenCV最新Windows源码步骤:1.将QT SDK安装目录下的{QtSDK}\mingw\bin添加到系统环境 ...

  4. Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置

    2017-2-23 Update: 修改并添加了部分细节 最近正在学习OpenCV ,为毕业设计做准备.Windows版本的OpenCV都默认提供对VS的支持,其在VS中的配置比较简单,网上也有大批教 ...

  5. QT中使用MinGW 编译的protobuf库--包含库的生成和使用

    QT中使用MinGW 编译的protobuf库--包含库的生成和使用 0前言 1准备工作 2生成protobuf库文件 3在QT中测试protobuf的使用 4结语 0前言 最近要在QT中使用prot ...

  6. Qt for Windows:Qt 5.4.0 MinGW 静态编译版本制作 (转)

    大致流程: 1.安装Qt(源码版)以及其他必要的环境 2.编译/安装 3.配置 4.使用 ----------正文分割线---------- 1.安装Qt(源码版) 1.1 下载Qt(两个地址二选一即 ...

  7. 在Windows环境下使用MinGW编译Qt 4.8.6

    1.修改环境变量工具推荐:Rapid Environment Editor.官网:http://www.rapidee.com/ 修改前请先备份当前的环境变量.然后: (1)检查系统变量path,删除 ...

  8. cmake编译opencv指南

    目录 cmake编译opencv指南 用包管理器安装 查看opencv相关的包 执行安装 编译安装 为什么编译安装 下载源码 编译脚本 执行编译脚本.解决3rdparty下载 编译后的设定-环境变量 ...

  9. opencv第二课,使用cmake编译OpenCV,并添加opencv_contrib模块

    一.下载安装cmake 想要在Windows平台下生成OpenCV的解决方案,我们需要一个名为cmake的开源软件,可以在camke的官网:http://www.cmake.org/上下载到 或者点击 ...

随机推荐

  1. 安卓开发之生成XML文件

    package com.lidaochen.phonecall; import android.net.Uri; import android.os.Environment; import andro ...

  2. 数据库 master拒绝了 create database 权限

    1.通过windows身份验证方式登录 2.为登录名赋予服务器角色权限,其中dbcreator权限表示允许新增和修改权限,sysadmin权限是管理员权限,包含dbcreator范围,若不追求权限精准 ...

  3. spring 整合mongodb报NoSuchMethodError错误

    刚开始通过网上查到相关的资料进行了一些配置,参考链接:http://www.open-open.com/lib/view/open1454374782167.html maven的dependenci ...

  4. kafka启动失败错误:: replica.fetch.max.bytes should be equal or greater than message.max.bytes

    1 详细异常 2019-10-14 14:38:21,260 FATAL kafka.Kafka$: java.lang.IllegalArgumentException: requirement f ...

  5. 008.MVC与数据库的交互

    使用ASP.NET MVC实现向数据库插入数据的步骤(程序): (删除,修改,查找)步骤1:创建数据库,创建要使用的表(数据) 表中可以事先插入测试数据步骤2:新建项目,写代码2.1)在配置文件中设置 ...

  6. 2sum问题求解

    什么是2sum问题呢?举个例子就明白了:对于数列:[0.1.2.3.4.5.6.7.8.9],求两数相加=9的所有两数的组合,所以结果为:[0.9],[1.8],[2.7],[3.6],[4.5].所 ...

  7. jenkins 配置主从机制(master-slaver)

    1. 中文:系统管理——节点管理——新建节点(左上侧) 英文:Manage Jenkins——Manage Node——新建节点(左上侧) 2. 中文配图 英文配图: 3. 远程工作目录 以mac为例 ...

  8. [NOI2012]骑行川藏——拉格朗日乘子法

    原题链接 不会啊,只好现学了拉格朗日乘子法,简单记录一下 前置芝士:拉格朗日乘子法 要求\(n\)元目标函数\(f(x_1,x_2,...,x_n)\)的极值,且有\(m\)个约束函数形如\(h_i( ...

  9. UVa1048 Low Cost Air Travel——最短路

    很好的一道题呀 思路 状态\(d(i,j)\)表示已经经过了行程单中的\(i\)个城市,目前在城市\(j\)的最小代价,直接建边跑最短路就行了 比如机票为\(ACBD\),行程单为\(CD\),那么对 ...

  10. Map遍历效率 : entrySet > keySet

     1    //entrySet()  2     for (Entry<String, String> entry : map.entrySet()) {  3         Stri ...