Qt+OpenCV环境搭建

最近想学习的两样东西,Qt和OpenCV,之前都有短暂使用过,但是用的不多。本文从环境搭建开始写起。

本文使用的软件版本及下载地址

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

Qt


Qt在安装过程中需要选择编译器,本文使用C++作为开发语言,编译器可以选择MinGW或者MSVC,MSVC需要安装相应版本的Visual Studio作为支持,本文选择MinGW,在安装时要勾选相应版本的MinGW。


CMake

OpenCV是使用c/c++编写的,官方网站提供的版本Qt不能直接使用,需要使用CMake重新编译Qt可用的版本。安装时注意勾选“Add CMake to the system PATH for all users”。


OpenCV

安装直接运行就可以。安装完成后开始进行编译。

添加MinGW环境变量

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

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

运行cmake-gui.exe,分别选择OpenCV的源码路径和编译输出路径



点击Configure,进行配置如下,然后next



配置编译器路径,然后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

第一次configure完成后,勾选 WITH_QT 和 WITH_OPENGL,再次点击configure



第二次configure完成后, 将CMAKE_BUILD_TYPE修改为 Release,再次点击configure



第三次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;
}

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

你可能感兴趣的:(Qt+OpenCV环境搭建)