用于 Qt 的 OpenCV 编译 (CMake 方式) 问题解决

news/2025/2/22 8:41:25/文章来源:https://www.cnblogs.com/rainbow70626/p/18725246

本文主要参考 《QT+opencv源码编译》:https://blog.csdn.net/m0_49156395/article/details/135721596

详细步骤请阅读上面文章,本文主要着重强调其中的关键步骤。

一、Configure(CMakeList.txt)和 generate(Makefile) 过程

(11)先进行初次Configure

"Where to build the binaries"选项选择一个新建的文件夹保存编译后的文件和编译过程中产生的中间文件

选择MinGW Makefiles,"Specify native compilers"自定义编译器

编译器选择QT的Tools目录下对应套件下的gcc和g++编译器来编译c和c++程序

然后点击configure

如果出错:CMake was unable to find a build program corresponding to "MinGW Makefiles"

解释:

这个错误表明CMake无法找到用于生成Makefiles的构建程序。在使用CMake生成项目文件时,如果指定了"MinGW Makefiles",CMake需要一个Make工具来构建项目,而这个工具通常是由MinGW提供的。如果CMake找不到这样的工具,它会报出这个错误。

解决方法:

  1. 确认MinGW是否已经安装,并且其bin目录是否已经添加到系统的PATH环境变量中。

  2. 如果MinGW已安装但未添加到PATH,将其添加到PATH中。

  3. 如果未安装MinGW,需要先下载并安装MinGW,确保安装过程中包含了MinGW的Make工具。

  4. 重新运行CMake,指定"MinGW Makefiles"作为构建系统。

如果以上步骤无法解决问题,可以尝试以下额外步骤:

  • 使用CMake GUI时,确保点击了"Configure"按钮来刷新环境变量。
  • 重新运行CMake指令,并确保指定了正确的MinGW安装路径。
  • 检查CMakeLists.txt文件是否有误,确保没有语法错误。
  • 如果使用的是CMake的脚本,确保CMake可以访问到MinGW的路径。

最终解决办法:

配置环境变量,将cmake和QT的mingw32编译器的路径添加到Path环境变量中(注意:QT有两个路径)

 

(12)第二次Configure

配置相关选项过程(可以在Search框中直接搜名字查找):

  • ”CMAKE_BUILD_TYPE“设置编译类型,Debug和Release
  • ”WITH_1394“选择框选中(此选项可不选中)
  • “WITH_OPENGL”选择框选中
  • “WITH_QT”选择框选中
  • 另外,设置 OPENCV_EXTRA_MODULES_PATH  = path\to\contrib\modules\face

其他的选项保持默认即可,然后再次点击Configure

(13)第三次Configure

Configure完毕后将QT的一些路径进行设置为自己本地安装的QT路径,这是以后编译QT项目时候使用到的文件查找路径,设置完毕后再次Configure。

 

二、install过程

(16)关闭cmake-gui,打开cmd,切换到opencv的编译路径下,开始使用mingw32进行编译安装,“mingw32-make -j8”,使用Makefile进行编译,“-j 8”表示使用8个线程进行编译,编译速度快一些,编译前可以先查看一下电脑的线程数
(17)编译libopencv_corexxx.dll报错中断退出

解决办法:返回cmake,添加Entry,名字为OPENCV_VS_VERSIONINFO_SKIP,Value选中,将CMAKE_CXX_FLAGS选项的值修改为“-std=c++11”,支持c11,然后再次Configure,Generate,mingw32-make -j8进行编译,成功编译后进行安装

(18)使用mingw32-make install命令进行安装,安装成功后便会在同级目录下生成一个install文件夹,这个文件夹下便是mingw套件编译源码后的文件

 

三、QT中使用opencv

(1)将opencv的install文件夹下的“\x64\mingw\bin”,路径添加到环境变量Path

(2)新建QT项目,注意:选择编译套件的时候一定要选择和opencv编译时候用的套件一致(比如编译的时候使用64位的,选择套件的也是64位的)

(3)QT项目在pro文件中使用INCLUDEPATH引入opencv的头文件,LIBS引入opencv的静态文件

INCLUDEPATH += D:\apps\Opencv\opencv\mingw32-build\install\include
LIBS += D:\apps\Opencv\opencv\mingw32-build\lib\libopencv_*.a

(4)引入头文件#include “opencv/opencv.hpp”

(5)使用cv命名空间using namespace cv;

(6)使用opencv中的函数、数据类型编写项目,如显示图片函数imshow() , 摄像头类型videoCapture......

(7)发布程序,使用windeployqt程序将qt的dll文件复制到程序目录下,然后运行程序,因为缺少opencv的dll文件会报错,程序无法运行,根据报错时提示缺少哪些dll文件,到opencv的install目录下复制到发布的应用程序同级目录下,问题解决。

 

 

人脸识别项目附加编译:Seetface 2 的CMake编译过程:

Seetaface2 和 OpenCV 的编译过程很像,可以参考文章:https://blog.csdn.net/weixin_43777852/article/details/118487588

除了有以下几点需要注意的地方:

1. 修改openCV_DIR为build后库的路径,比如我的是 D:\opencv-4.0.1-vc14_vc15\opencv\build\x64\vc15\lib。

2. CMAKE_INSTALL_PREFIX 不像opencv在 build目录下,而是在C盘,因此可能出现Maybe need administrative privileges.这样的权限错误,在 build目录下新建一个 install 目录,将其设置好。

Seetface 2模型下载

  • 人脸检测模块 FaceDetector 模型下载链接:
    MD5 :E88669E5F1301CA56162DE8AEF1FD5D5
    百度网盘:https://pan.baidu.com/s/1Dt0M6LXeSe4a0Pjyz5ifkg 提取码:fs8r
    Dropbox : https://www.dropbox.com/s/cemt9fl48t5igfh/fd_2_00.dat?dl=0

  • 面部特征5点定位模块 FaceLandmarker 模型下载链接:
    MD5 :877A44AA6F07CB3064AD2828F50F261A
    百度网盘:https://pan.baidu.com/s/1MqofXbmTv8MIxnZTDt3h5A 提取码:7861
    Dropbox : https://www.dropbox.com/s/noy8tien1gmw165/pd_2_00_pts5.dat?dl=0

  • 面部特征81点定位模块 FaceLandmarker 模型下载链接:
    MD5 :F3F812F01121B5A80384AF3C35211BDD
    百度网盘:https://pan.baidu.com/s/1CCfTGaSg_JSY3cN-R1Myaw 提取码:p8mc
    Dropbox : https://www.dropbox.com/s/v41lmclaxpwow1d/pd_2_00_pts81.dat?dl=0

  • 人脸特征提取和比对模块 FaceRecognizer 模型下载链接:
    MD5 :2D637AAD8B1B7AE62154A877EC291C99
    百度网盘:https://pan.baidu.com/s/1y2vh_BHtYftR24V4xwAVWg 提取码:pim2
    Dropbox : https://www.dropbox.com/s/6aslqcokpljha5j/fr_2_10.dat?dl=0

 

 

参考资料:

1. 《QT+opencv源码编译》:https://blog.csdn.net/m0_49156395/article/details/135721596

2. Seetface 6的CMake编译过程:https://blog.csdn.net/fy291021851/article/details/124928615

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/886892.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【硬件测试】基于FPGA的2ASK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

1.算法仿真效果 本文是之前写的文章基于FPGA的2ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR的硬件测试版本。在系统在仿真版本基础上增加了ila在线数据采集模块,vio在线SNR设置模块,数据源模块。硬件ila测试结果如下:(完整代码运行后无水印…

即将迎来全民编程时代

最近,我的这种情绪现在越来越强烈了。 还记得我刚开始使用AI辅助编程的时候,写出来的代码能运行就不错了,还别想着要他理解需求和修改bug了。直到2024年年底到2025年年初这短短两个多月的时间,我对它的想法变成了,它是我们的编程搭子,甚至可以说是免费劳动力了。 再试编程…

.net8:拦截器Interceptors

在C#12中,引入了拦截器,但一直是试验性的功能,所以自己初步看了一下,没有写文章,最近在看AOT时,发现Dapper.AOT已经用上了这个功能,觉得还是整理一下,分享出来吧,如果以后这个功能改变了,或移除了,请无视这篇文章。下面是微软官方文档的提示:拦截器是一项试验性功能…

基于电压矢量变换的锁相环simulink建模与仿真

1.课题概述 基于电压矢量变换的锁相环simulink建模与仿真,这个模型的基本构架如下所示:2.系统仿真结果由图中锁相结果可以看出,利用新型锁相环技术在电网电压平衡条件和不平衡条件下均可对基波正序电压分量实现快速准确的锁相输出。这将在后面研究系统 电压不平衡环境下负序…

Spatial Data Analysis简易教程

1. 因子的多重共线性 (1)Perason相关系数(不推荐) SPSS-分析-》相关-》双变量-》确定,选择相关系数较小的因子:但是在分析-》回归-》线性中共线性诊断中,仍有3个变量的VIF>10,因此,该方法不可取。(2)共线性诊断 分析-》回归-》线性,在选项中勾选共线性诊断,方法…

基于线性核函数的SVM数据分类算法matlab仿真

1.程序功能描述 基于线性核函数的SVM数据分类算法matlab仿真,通过程序产生随机的二维数据,然后通过SVM对数据进行分类,SVM通过编程实现,不使用MATLAB自带的工具箱函数。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行 (完整程序运行后无水印) 3.核心程序 % …

服务器 压测cpu

一. 使用的工具 1. taskset简单理解为: -c 找 cpu核心 -p 找 已存在进程2. stress 二 . 查看cpu核心个数 ,命令 lscpu 三. 使用taskset 与 yes 命令简单测试,htop查看cpu使用率 1. 测试第一个cpu核心 taskset -c 0 yes >> 1.txt 2. 测试第二个cpu核心taskset -c 1 y…

宽字节注入 sqli-lab lesson 32

1.判断注入 1.输入 1,addslashes函数将 进行转义变为 \ ,此时的单引号仅作为普通的字符2.输入1%df,addslashes 函数将 进行转义变为 \ ,此时 %df%5c会进行结合变成了一个汉字 運,因此SQL查询语句成功被改变了从而引起了报错 1%df =>1%df%5c3.将多余的进行注释然后按照…

Hume AI 即将推出新 AI 语音产品;声网上线对话式 AI 引擎,15 分钟让 DeepSeek 开口说话丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…

DDPM

前向过程 扩散模型的前向过程指的是向原始数据中逐渐添加高斯噪声直到数据完全变成噪声的过程。假设\(q(x_0)\)是真实图像的分布,通过从训练集的真实图像中随机采样一张图像,表示\(x \sim q(x_0)\)。那么前向过程\(q(x_t | x_{t-1})\)指的是在前向的每一步中通过对图像\(x_{t…

同事PPT又拿奖了?偷偷用这AI工具,3步做出老板狂赞的年度报告

大家好,我是六哥,今天为大家分享一款PPT辅助神器,年底汇报必备神器!就是Napkin AI ! 这是一款超级酷的工具,它能把你写的文字一秒钟转化为各种炫酷的视觉效果,比如图表、流程图、信息图啥的。如果你想做一个引人注目的演示,或者想让你的博客文章更有吸引力,Napkin简直…

1.Java入门

本章目标简介 计算机基础 计算机语言发展史 java语言 JDK安装 第一个HelloWorld 集成开发环境本章内容 一、简介 1、企业用人的标准 我们在说人的能力的时候通常是有这三种说法:人的专业知识能力 人的执行能力 人学习的能力。在这三种能力当中,其实最重要的反而学习能力。你可…