下载

下载Qt

在线下载

安装包下载

下载CMake

也可以用Qtcmake

点击下载

下载Git

点击下载

下载OpenCV

 建立一个空白文件夹~/,在里面创建两个文件夹srcoutputsrc用来放opencv源码,output用来放编译输出,并且output也是以后lib的路径。

 在~/git bash打开

 可能需要科学上网下载,需要配置git代理

git clone https://github.com/opencv/opencv.git  # 下载opencv
git clone https://github.com/opencv/opencv_contrib.git # 下载opencv_contrib扩展包,根据需要来

# 网络问题配置git代理,注意这里配置的是全局Git代理
git config --global http.proxy socks://127.0.0.1:7890
git config --global https.proxy socks://127.0.0.1:7890

环境变量

 值得注意的是,我们makegccg++都可以用Qt的,前面cmake也可以用Qt的。下面这些路径需要添加到环境变量

make其实在Windows下全称是mingw32-make

注意下面路径,后面需要用到的

  • cmake~\Qt\Tools\CMake_64\bin
  • make,g++,gcc~\Qt\Tools\mingw1120_64\bin

编译

设置源目录以及输出目录

image-20230101224801424

设置C++和C

image-20230101224834650

  • g++: ~\Qt\Tools\mingw1120_64\bin\g++.exe
  • gcc: ~\Qt\Tools\mingw1120_64\bin\gcc.exe

image-20230101224855766

image-20230101225023712

修改编译选项

 需要多次configure,直到所有红色项消失,不能一次性配置好所有红色项

注意我这里是相对路径,需要填写绝对路径

  • CMAKE_MAKE_PROGRAM: ~/Qt/Tools/mingw1120_64/bin/mingw32-make.exe(前面没有勾选Advanced才会出现)
  • WITH_OPENGL: √
  • WITH_QT: √
  • WITH_CUDA: √(可选,我选了出错还没解决
  • OPENCV_EXTRA_MODULES_PATH: ~/Src/opencv_contrib (可选)

点击Configure,然后还需要进行配置

  • Qt5_DIR或者Qt6_DIR: ~/Qt/6.4.1/mingw_64(配置一个就行)
  • QT_QMAKE_EXECUTABLE: ~/Qt/Tools/CMake_64/bin/cmake.exe(qt6使用cmake编译)

点击Configure

没有错误后,点击Generate

正式编译

前面CMAKE生成的Makefile在之前设置的~/Output下面

打开cmdcd~/output

mingw32-make -j 8 # 数字表示核心数,多线程编译,根据自己电脑的核心数来

# 没有错误执行下面
mingw32-make install

都没错误表示ok了

配置

路径信息

  • install路径~/Output/install(后面需要的lib头文件什么的都在这)
  • 头文件:~\Output\install\include
  • LIB~\Output\install\x64\mingw

Qt配置

新建一个Qt工程,注意选择MinGW64而不是用的MSVC

在Qt配置文件中加入如下两行,加在配置文件位置任意,就加到FORMS下面就行

一定要用绝对路径

INCLUDEPATH += ~\Output\install\include
LIBS += ~\Output\install\x64\mingw\lib\libopencv_*.a
LIBS += -L$$PWD/OpenCV -llibopencv_calib3d470 -llibopencv_core470 -llibopencv_dnn470 -llibopencv_features2d470 -llibopencv_flann470 -llibopencv_gapi470 -llibopencv_highgui470 -llibopencv_imgcodecs470 -llibopencv_imgproc470 -llibopencv_ml470 -llibopencv_objdetect470 -llibopencv_photo470 -llibopencv_stitching470 -llibopencv_video470 -llibopencv_videoio470

环境变量配置

运行时候,需要配置dll的,因此,我们把~\Output\install\x64\mingw\bin添加到环境变量,注意是绝对路径

配置完环境变量,需要重启Qt,不然Qt获得的环境变量没有更新的。

测试

#include <opencv2/opencv.hpp>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    cv::VideoCapture capture(0);
    cv::Mat src;
    capture.read(src);
    cv::imshow("测试", src);
}

测试如上代码,运行

image-20230101235154682

打包程序

image-20230101235412353

新建一个文件夹,名字我取QtCV,然后把Release版本的exe复制到该文件夹下

Release版本的exe路径是:新建Qt工程的路径\QtCV\build-qtcv-Desktop_Qt_6_4_1_MinGW_64_bit-Release\release\qtcv.exe

image-20230101235910409

点击下面红框框的Qt控制台窗口

image-20230101235531153

cd到上面新建的文件夹QtCV

cd ~/QtCV
windeployqt qtcv.exe

自动把需要的运行文件复制过来了,将整个文件夹打包发给一台没有配置的电脑,看是否能够运行,这样子是不能运行的,因为windeployqt并没有帮你把opencv的库复制过去。手动复制dll到该目录下

image-20230102000129034

image-20230102002921318

然后其他电脑才能运行