基于QT+cmake编译MinGW版本opencv
本文详细介绍了在Windows 11环境下,使用CMake和MinGW编译OpenCV 4.8.0的步骤,并将其集成到Qt 5.14.2项目中。首先,配置系统环境变量,包括CMake和MinGW的路径。接着,通过CMake工具配置OpenCV,选择MinGW Makefiles并指定编译器路径。在配置过程中,需启用WITH_OPENGL和WITH_QT选项,并设置QT路径。完成配置后,生成Make
一、环境介绍
本文使用环境为:win11、opencv-4.8.0-windows、cmake-3.29.0-windows-x86_64、Qt5.14.2 MinGW64位
opencv下载地址:https://opencv.org/releases/
可以下载exe.修改后缀位zip文件 然后解压,则可以获得源码和对应的msvc版本的opencv库
cmake下载地址:CMake 安装与配置 | 菜鸟教程Download CMakeCMake 安装与配置 | 菜鸟教程
下载zip解压即可
二、设置系统变量
本文中使用的环境变量如下,需要根据自己实际情况进行配置,主要设置cmake路径和mingw的gcc和g++路径
cmake:E:\tools\cmake-3.29.0-windows-x86_64\bin
Qt的Mingw64:C:\Qt\Qt5.14.2\Tools\mingw730_64\bin
配置环境变量可以采用两种方式:
1.直接配置电脑的系统环境变量,如下图所示(下图源于连接:基于QT+cmake编译opencv_cmake 编译opencv-CSDN博客):
通过系统搜索编辑系统环境变量
2.通过cmake工具完成配置,这样仅针对于该项目实现环境变量配置,本文采用这种方式配置,下面第三节会有介绍:
三、配置cmake,编译opencv
配置configure,选择MinGW Makefiles,点击Specify native compilers自定义编译器,再next
配置gcc和g++位置 ,在此目录下:C:\Qt\Qt5.14.2\Tools\mingw730_64\bin
如果没有设置系统环境变量会报错 ,错误如图:
则需要按照如下方式完成环境变量的配置
这个环境变量后面加上上面的提到的cmake和mingw的路径
等待Configuring done后出现红色区域,选中WITH_OPENGL和WITH_QT,再次点击Configure
配置entry,点击Add Entry,输入name为OPENCV_VS_VERSIONINFO_SKIP,Type选择BOOL,Value选中
Configure完毕后将设置本地安装的QT路径,以后编译QT项目时候使用到的文件查找路径,设置完毕后再次Configure,直至没有红色区域,点击Generate生成Makefile,完成后显示“Generating done”
提示Configuring done标识配置完成,点击Generate生成Makefile,等待显示Generating done
在生成编辑文件目录打开cmd,输入mingw32-make -j 8,-j 8表示使用8个线程编译,速度更快
mingw32-make -j 8
如果提示 mingw32 找不到 则是因为没有配置系统环境变量的原因,则需要使用如下程序去打开对应的目录 输入mingw32-make -j 8
1.本次遇到的报错问题 ,这里报错不容易看到的时候可以去掉多线程编译,就可以知道报错位置
opencv 编译报错: error: temporary of non-literal type 'google::protobuf::internal::CallOnceInitializedMutex<std::mutex>' in a constant expression
原因是gcc版本太低导致:
在Opencv源代码中修改: opencv-4.5.5\3rdparty\protobuf\src\google\protobuf\stubs\mutex.h
重新编译即可,后面又别的报错可以相互交流!
成功编译后执行安装命令mingw32-make install
mingw32-make install
安装完成后出现install文件夹
四、使用opencv
创建新工程,工程文件引入opencv动态库
# 链接 OpenCV 库
LIBS += E:/opencvWorkspace/opencv-4.8.0-windows/opencv/buildMinGW/install/x64/mingw/lib/libopencv_*.dll.a
INCLUDEPATH += E:/opencvWorkspace/opencv-4.8.0-windows/opencv/buildMinGW/install/include
DEPENDPATH += E:/opencvWorkspace/opencv-4.8.0-windows/opencv/buildMinGW/install/include
main.cpp
#include "widget.h"
#include <QApplication>
#include <opencv2\opencv.hpp>
#include<opencv2\core\core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>
#include<stdio.h>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
cv::Mat mat = cv::imread("E://testimage//bg.jpg");
if(mat.empty()){
return false;
}
cv::Mat image;
cv::cvtColor(mat,image,CV_BGR2RGB); //彩色显示
cv::imshow("Image",mat);
return a.exec();
}
正常构建,运行
本文按照下面参考链接去完成的,记录过程用于学习
更多推荐
所有评论(0)