无奈电脑系统重装,又到了要重新配置环境的时候了,正好就顺便写一篇博客记录下整个配置过程吧~
本文是基于当前时间的最新发布的工具环境的搭建教程: OpenCV4.1.1 QT5.13 QtCreater4.9.1 MinGW730_64
目录
1,安装前准备
2,安装QT
3,安装Cmake
4,(最关键的来了!)安装,编译Opencv4.1.1
5,编写QT测试程序,调用已经编译好的opencv库。
1,安装前准备
首先,你需要准备的安装文件有opencv,cmake,qt三个:
(1)Opencv 4.1.1
下载地址: https://opencv.org/releases/
文件名:opencv-4.1.1-vc14_vc15.exe
(2) qt-5.13.0
下载地址:http://download.qt.io/archive/qt/5.13/5.13.0/
文件名:qt-opensource-windows-x86-5.13.0.exe
(3)cmake-3.15.2
下载地址: https://cmake.org/download/
文件名:cmake-3.15.2-win64-x64.msi
准备好以上三个文件后,下面就是正式开始搭建开发环境了!!
2,安装QT
(1)直接下一步
(2)这边不填,直接skip即可
(3)指定你的QT安装目录
(4)这里注意!!选择组件请务必勾选MinGw7.3.0,并且根据本机系统选择32位或者64位安装,这里因为我的电脑是64位的所以选择的是64bit版本的mingw
(5)选择同意协议
(6)下面一路下一步就可以开始安装了
(7)安装完成后,需要将MinGw配置到系统环境变量中,首先打开 此电脑-》属性-》高级系统设计-》环境变量
(8)找到环境变量里的系统变量,双击点开path,新添加一条,将你QT安装目录里的\Tools\mingw730_64\bin 的地址,完完整整复制到这里,例如我的是D:\WorkApp\QT\Tools\mingw730_64\bin,至此,QT安装部分已完成。
3,安装Cmake
(1)双击cmake-3.15.2-win64-x64.msi,一路下一步,如图示选择,继续下一步,选择好安装目录后安装就搞定了
4,(最关键的来了!)安装,编译Opencv4.1.1
(1)双击opencv-4.1.1-vc14_vc15.exe,选择一个路径解压OpenCV4.1.1的源代码
(2)等待源代码解压完成
(3)解压完成后,启动刚刚安装好的Cmake程序,自己填写OpenCV刚刚解压的源码目录,以及自己新建一个文件夹用于存放编译完成的opencv,填写到下一行的编译目标目录,然后点击下方的configure按钮进行第一次配置。
(4)选择MinGw Makefiles,然后选择第二项,完成后点击下一步
(5)指定c编译器和c++编译器的路径,请找到你的QT目录\Tools\mingw730_64\bin下的gcc.exe和g++.exe程序,依次对应填写。
例如我的路径是:
C:D:/WorkApp/QT/Tools/mingw730_64/bin/gcc.exe
C++:D:/WorkApp/QT/Tools/mingw730_64/bin/g++.exe
(6)等待第一次configure完成。(configure到最后可能会下载opencv_videoio_ffmpeg相关库文件,如果没有“”的话可能会比较久)
(7)configure完成后,需要配置一些参数。
在第三行的Search中,搜索WITH_QT,打勾。
搜索WITH_OPENGL,打勾。
搜索ENABLE_PRECOMPILED_HEADERS,取消打勾。
搜索QT5_DIR,将“你的QT路径\5.13.0\mingw73_64\lib\cmake\Qt5”填进去。 例如我的是:D:\WorkApp\QT\5.13.0\mingw73_64\lib\cmake\Qt5,完成以上操作后点击Configure进行第二次Configure。
(8)第二次Configure完成后,点击Generate生成opencv编译文件到目标目录。
(9)Generating done之后,打开win10的Windows PowerShell命令行,输入命令cd 进入到你的opencv的目标目录,然后开始编译(这次编译比较耗时间,具体耗时长短由你的CPU性能而定)。
编译命令:
mingw32-make.exe -j (线程数量)
(线程数量根据自己电脑cpu性能酌情填写。4核CPU就填4,8核心就填8,以此类推,例如我是4核心的就填“mingw32-make.exe -j 4”即可)
(10)漫长的等待后,终于完成了,完成之后输入命令“mingw32-make.exe install”完成最后的编译,完成后,opencv库的编译已经成功。
mingw32-make.exe install
(11)将opencv编译好的库文件路径加入系统变量path中。
(12)最后再添加一个新的环境变量名字 OPENCV_SDK_DIR 变量值就是你编译好的opencv目录的install文件夹的路径,示例如下图
5,编写QT测试程序,调用已经编译好的opencv库。
(1)进入QT Creater4.9.1
(2)新建QT工程,选择QT Widgets Application,
(3)设置工程名称,工程存放路径,一路下一步
(4)创建工程成功后,首先我们先随便准备一张图片,然后进入工程配置文件hello_opencv411.pro中,添加所需要用到的opencv库
示例代码:
#-------------------------------------------------
#
# Project created by QtCreator 2019-09-01T22:28:36
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = hello_opencv411
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
CONFIG += c++11
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
INCLUDEPATH += $$(OPENCV_SDK_DIR)/include
LIBS += -L$$(OPENCV_SDK_DIR)/x64/mingw/lib \
-lopencv_core411 \
-lopencv_highgui411 \
-lopencv_imgcodecs411 \
-lopencv_imgproc411 \
-lopencv_features2d411 \
-lopencv_calib3d411
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
(5)转到mainwindow.cpp,include要用到的opencv头文件,调用opencv库函数,利用opencv显示一张你的图片
示例代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//加载一张图片
Mat image = imread("D://qtProject/1.jpg");
//新建一个窗口,显示该图片
imshow("My Image", image);
}
MainWindow::~MainWindow()
{
delete ui;
}
(6)程序执行后,我们就能看到程序成功调用了我们刚刚编好的opencv库,显示出了一张图片,至此你已完成了全部的搭建操作。