关于Qt、opencv、cmake、boost的环境搭建详解

Windows7_ultimate_x64
Qt 5.11.1 官方下载地址
CMake 3.12.1 官方下载地址
OpenCV 3.4.3 官方下载地址

一、安装Qt
这里使用这个版本:qt-opensource-windows-x86-5.9.2.exe,在网上可以直接搜索这个关键字下载,
Qt在安装过程中需要选择编译器,本文使用C++作为开发语言,编译器可以选择MinGW或者MSVC,MSVC需要安装相应版本的Visual Studio作为支持,本文选择MinGW,在安装时要勾选相应版本的MinGW。
关于Qt、opencv、cmake、boost的环境搭建详解_第1张图片
关于Qt、opencv、cmake、boost的环境搭建详解_第2张图片
QT安装完毕

二、安装CMake,一般在网上下载的可以直接解压使用,如遇安装则可按下图安装

安装时注意勾选“Add CMake to the system PATH for all users”。
关于Qt、opencv、cmake、boost的环境搭建详解_第3张图片

三、添加QT的MinGW环境变量
在Path下增加MinGW的路径(根据自己的Qt安装路径有所不同,添加环境变量时注意用 ; 分隔),配置完成需要重启电脑才能生效。

C:\Qt\Qt5.11.1\5.11.1\mingw53_32\bin
C:\Qt\Qt5.11.1\Tools\mingw530_32\bin

关于Qt、opencv、cmake、boost的环境搭建详解_第4张图片

四、编译OpenCV
OpenCV必须通过Cmake编译后生成本机可以使用的文件,在qt中引用文件路径即可
安装直接运行就可以。安装完成后开始进行编译。
运行cmake-gui.exe,分别选择OpenCV的源码路径和编译输出路径
关于Qt、opencv、cmake、boost的环境搭建详解_第5张图片

点击Configure,进行配置如下,然后next
关于Qt、opencv、cmake、boost的环境搭建详解_第6张图片

配置编译器路径,然后finish

C: C:/Qt/Qt5.11.1/Tools/mingw530_32/bin/gcc.exe
C++: C:/Qt/Qt5.11.1/Tools/mingw530_32/bin/g++.exe

关于Qt、opencv、cmake、boost的环境搭建详解_第7张图片

第一次configure完成后,勾选 WITH_QT 和 WITH_OPENGL,再次点击configure
关于Qt、opencv、cmake、boost的环境搭建详解_第8张图片
第二次configure完成后, 将CMAKE_BUILD_TYPE修改为 Release,再次点击configure
关于Qt、opencv、cmake、boost的环境搭建详解_第9张图片

第三次configure完成后,点击generate,生成结束后,打开cmd,进入编译输出目录,执行编译指令(-j 表示多线程工作,电脑是几核的CPU,后面的参数就可以设为多少,可以节省编译时间)

d:
cd OpenCV
cd build-Qt
mingw32-make -j 4
mingw32-make install

编译过程中如果遇到类似这样的错误

... windres.exe: unknown option -- W ...

可以在配置Cmake时将 ENABLE_PRECOMPILED_HEADERS 关闭,重新进行编译。

编译过程中如果遇到类似这样的错误

 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope 

可以修改OpenCV的源文件,在cap_dshow.cpp文件中搜索

#include "DShow.h"

在这行代码前增加

#define NO_DSHOW_STRSAFE

然后重新编译可以解决。

编译过程中如果遇到类似这样的错误

using invalid field '{anonymous}::ComPtr::p'

可以在Cmake配置中,将 WITH_MSFS 关闭,然后重新编译可以解决。

编译过程中如果遇到类似这样的错误

nullptr’ was not declared in this scope

可以在Cmake配置中,将 ENABLE_CXX11 打开,然后重新编译可以解决。

编译成功后,将编译生成的库添加到系统环境变量中,在Path中增加(根据自己的编译路径)

D:\OpenCV\build-Qt\install\x86\mingw\bin

四、测试Qt+OpenCV环境

新建一个QWindow项目,名为TestOpenCV,修改项目配置文件TestOpenCV.pro,在文件末尾增加文件包含路径及所需库文件

INCLUDEPATH += D:\OpenCV\build\include

LIBS += D:\OpenCV\build-Qt\bin\libopencv_core343.dll
LIBS += D:\OpenCV\build-Qt\bin\libopencv_highgui343.dll
LIBS += D:\OpenCV\build-Qt\bin\libopencv_imgcodecs343.dll
LIBS += D:\OpenCV\build-Qt\bin\libopencv_imgproc343.dll
LIBS += D:\OpenCV\build-Qt\bin\libopencv_features2d343.dll
LIBS += D:\OpenCV\build-Qt\bin\libopencv_calib3d343.dll

修改mainwindow.cpp文件如下

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include 
#include 


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // read an image
    cv::Mat image = cv::imread("d://1.jpg", 1);
    // create image window named "My Image"
    cv::namedWindow("My Image");
    // show the image on window
    cv::imshow("My Image", image);
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行成功后环境搭建成功。

五、编译boost源码为静态库

 1>将你的Qt的工具目录(有g++.exe)设置环境变量。(我的是 F:\Qt592\Tools\mingw530_32\bin,要依据实际情况)
 2>下载boost源码并解压(如boost_1_65_1.zip)
 3>在命令行进入boost_1_65_1/tools/build/src/engine
 4>执行 build.bat gcc,在当前目录将会生成bin.ntx86文件夹,里面包含两个exe文件b2.exe,bjam.exe
 5>将bin.ntx86\bjam.exe拷贝到E:\boost_1_65_1
 6>change dir 进入boost_1_65_1
 7>执行命令 bjam "toolset=gcc" install,执行命令会在C盘根目录下生成一个Boost文件夹。我们要使用的头文件与lib就在里边。

下面两步非常关键:

  8>将7>中生成的 Boost 里的 boost文件夹拷贝到qt 的include下面(我的在 F:\Qt592\5.9.2\mingw53_32\include)
  9>将7>中生成的 Boost 里的 lib下.a文件拷贝到 qt lib目录下 (我的在 F:\Qt592\5.9.2\mingw53_32\lib)

你可能感兴趣的:(Qt开发)