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安装完毕
二、安装CMake,一般在网上下载的可以直接解压使用,如遇安装则可按下图安装
安装时注意勾选“Add CMake to the system PATH for all users”。
三、添加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
四、编译OpenCV
OpenCV必须通过Cmake编译后生成本机可以使用的文件,在qt中引用文件路径即可
安装直接运行就可以。安装完成后开始进行编译。
运行cmake-gui.exe,分别选择OpenCV的源码路径和编译输出路径
配置编译器路径,然后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;
}
运行成功后环境搭建成功。
五、编译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)