下载
下载Qt
下载CMake
也可以用Qt
的cmake
下载Git
下载OpenCV
建立一个空白文件夹~/
,在里面创建两个文件夹src
和output
,src
用来放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
环境变量
值得注意的是,我们make
,gcc
和g++
都可以用Qt的,前面cmake
也可以用Qt
的。下面这些路径需要添加到环境变量
make其实在Windows下全称是mingw32-make
注意下面路径,后面需要用到的
cmake
:~\Qt\Tools\CMake_64\bin
make,g++,gcc
:~\Qt\Tools\mingw1120_64\bin
编译
设置源目录以及输出目录
设置C++和C
g++
:~\Qt\Tools\mingw1120_64\bin\g++.exe
gcc
:~\Qt\Tools\mingw1120_64\bin\gcc.exe
修改编译选项
需要多次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
下面
打开cmd
,cd
到~/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);
}
测试如上代码,运行
打包程序
新建一个文件夹,名字我取QtCV
,然后把Release
版本的exe
复制到该文件夹下
Release
版本的exe
路径是:新建Qt工程的路径\QtCV\build-qtcv-Desktop_Qt_6_4_1_MinGW_64_bit-Release\release\qtcv.exe
点击下面红框框的Qt控制台窗口
cd
到上面新建的文件夹QtCV
cd ~/QtCV
windeployqt qtcv.exe
自动把需要的运行文件复制过来了,将整个文件夹打包发给一台没有配置的电脑,看是否能够运行,这样子是不能运行的,因为windeployqt
并没有帮你把opencv
的库复制过去。手动复制dll
到该目录下
然后其他电脑才能运行