本文是在Qt的MinGw编译器配置OpenCV环境,这里仅作过程记录,不做原理讲解。其中大多数流程参考了别的博主的博客,由于版本问题,在配置过程中还是出现了很多问题。所以这里针对特定的版本做一个记录。
参考博客:
Qt配置OpenCV教程,亲测已试过(详细版)
Qt5+OpenCV3.4.6环境搭建
这里仅说明我当时配置时所使用的环境
我的各个软件的安装路径:
Qt
:D:\software\Qt\Qt5.14.2
Opencv
:D:\software\opencv346\opencv
CMake
:D:\software\cmake-3.23.2-windows-x86_64
这里我们使用mingw730_64(可能有些人有好几个版本,根据自己需求去选择即可,如果跟我的不一样,文章下面说明的路径根据你的实际情况去修改)
所以我配置的环境变量如下
在OpenCV的目录下面,新建一个
opencv-build
的目录(文件夹名称可以自定义),作为编译输出的地方。比如我这里:
D:/software/opencv346/opencv/opencv-build
# Where is the source code:
D:/software/opencv346/opencv/sources
# Where to build the binaries:
D:/software/opencv346/opencv/opencv-build
勾选Advanced
然后点击Configure
Compilers
# C
D:/software/Qt/Qt5.14.2/Tools/mingw730_64/bin/gcc.exe
# C++
D:/software/Qt/Qt5.14.2/Tools/mingw730_64/bin/g++.exe
点击Finish
等待绿条拉满,然后出现一大片红,然后开始检查参数配置。
1、找到CMAKE_MAKE_PROGRAM
,确认Value
2、勾选 ENABLE_CXX11
、WITH_OPENGL
、WITH_QT
3、取消勾选 WITH_OPENGL_D3D11_NV
然后再次点击Configure,等待绿条拉满
确认QT5xxxcc_DIR
这几个变量的Value,如图所示即可(如果已经有了就不用修改,如果没有就修改一下)。
然后再次点击Configure。
此时不再出现红色,点击Generate。
等待绿条拉满,出现Generating done
就可以了。
进入刚刚我们创建的opencv-build
文件夹中,你会看到刚刚CMake输出的内容。
将鼠标放在该文件夹界面内,按住shift键,同时点击鼠标右键,点击在此处打开Powershell窗口(s),进入Windows Powershell
输入下面命令,按回车键执行该命令。
mingw32-make -j 8
注意!!!这一步骤可能耗时会比较久。这里的-j 8
是为了让CPU进行多任务处理,可以加快编译速度。根据自己电脑的配置进行设置。
我的电脑是i7-12700 12核CPU,所以我选择-j 12
大概几分钟就完成了。
等待终端跑完。。。。。。。。。
按照我上面的步骤来操作,是不会出现问题的。
一开始我是按照上面那几个博客里的步骤,就出现了各种错误。
就比如在39%的时候出现:mingw32-make: *** [Makefile:165: all] Error 2 等等
通过不断的踩坑填坑最后还是解决了
100%完成之后,输入
mingw32-make install
完成之后退出。
将opencv-build
输出的内容添加到环境变量,路径如下
D:\software\opencv346\opencv\opencv-build\install\x64\mingw\bin
至此 OpenCV编译完成。
在Qt Create中新建一个项目,按照正常流程新建即可,在选择kits的时候要注意选择MinGw 64,(在第2步的配置环境变量的时候,你选择的是什么,这里就选什么,否则会出错!下面会说)
在xxx.pro
文件中
添加以下内容,根据你自己的实际情况修改:
INCLUDEPATH += D:\software\opencv346\opencv\opencv-build\install\include
LIBS += D:\software\opencv346\opencv\opencv-build\lib\libopencv_*.a
在mainwindow.cpp中加上如下代码
#include
using namespace cv;
在MainWindow的构造函数中添加
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//一定要使用绝对路径,且不要有中文,其他可能会报错
Mat image = imread("F:/img/11182.png",1);
namedWindow("Display window",WINDOW_AUTOSIZE);
imshow("Display window",image);
}
如果kit不是我选择的MingGW 64
的话,比如我这里选MSVC2017 64
一运行就会报这些错误
此时你只要改回MingGW 64
即可。
MSVC编译器需要使用另外的配置,可以看我另一篇文章【Qt】添加第三方库的知识补充
至此,Qt5.14.2配置OpenCV3.4.6环境完成。