QT+opencv源码编译

时间记录:2024/1/20

一、版本介绍

QT5.12.7+cmake3.22.0+opencv4.5.4

二、编译步骤

(1)下载opencv源码,然后安装,opencv的安装即对源码的解压过程,解压后的文件目录如下
opencv源码目录
(2)opencv安装解压后的目录介绍:

  1. build文件夹vs编译源码后的文件,QT项目使用vs套件编译的可以直接使用本文件夹下的文件
  2. sources文件夹opencv的源代码,mingw32套件编译qt源码的项目需要先使用mingw32编译器编译opencv源码,然后引入QT进行使用。

(3)配置环境变量,将cmake和QT的mingw32编译器的路径添加到Path环境变量中(注意:QT两个路径)
环境变量
(4)QT的两个路径,一个是gcc和g++所在的路径,一个是qmake所在的路径
(5)打开cmake-gui界面,"Where is the source code"选项选择opencv源码的文件夹,"Where to build the binaries"选项选择一个新建的文件夹保存编译后的文件和编译过程中产生的中间文件
cmake-gui选择源码
(6)选择完毕后,点击左下方的Configure按钮配置mingw32编译器
配置mingw32编译器
(7)选择MinGW Makefiles,"Specify native compilers"自定义编译器
mingw配置
(8)编译器选择QT的Tools目录下对应套件下的gcc和g++编译器来编译c和c++程序
选择c/c++编译器
(9)点击Finish便会开始进行opencv默认组件的编译
(10)ffmpeg下载报错,原因ffmpeg在外网,网络连接失败/超时
下载ffmpeg报错
解决办法:
  https://github.com/opencv/opencv_3rdparty下载正确版本的ffmpeg,opencv4.5.4对应版本20211005,将下载的文件中“ffmpeg_version.cmake”、“opencv_videoio_ffmpeg.dll”和“opencv_videoio_ffmpeg_64.dll”三个文件复制到opencv的下载缓存文件夹“sources.cache\ffmpeg”中,然后打开cmd窗口切换到此文件夹,然后输入命令“certutil -hashfile 文件名 MD5”查看文件的MD5码,查看和未下载成功文件的MD5码是否相同,相同则修改文件名,然后重新点Configure
md5码查看
修改前文件
修改前文件
修改后文件
修改后文件
文件大小不对便是没有下载成功
(11)Configure之后窗口没有报红便编译成功了
编译成功截图
(12)组件设置,可以在Search框中直接搜名字查找
组件设置
”CMAKE_BUILD_TYPE“设置编译类型,Debug和Release
”WITH_1394“选择框选中
“WITH_OPENGL”选择框选中
“WITH_QT”选择框选中
其他的选项保持默认即可,然后再次点击Configure
(13)Configure完毕后将QT的一些路径进行设置为自己本地安装的QT路径,这是以后编译QT项目时候使用到的文件查找路径,设置完毕后再次Configure
QT文件夹选择
(14)框中显示Configure done便完成了配置
配置完成界面
(15)点击Generate生成Makefile,完成后显示“Generating done”
生成makefile成功
(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进行编译,成功编译后进行安装
添加Entry
(18)使用mingw32-make install命令进行安装,安装成功后便会在同级目录下生成一个install文件夹,这个文件夹下便是mingw套件编译源码后的文件
安装成功文件夹

三、QT中使用opencv

(1)将opencv的install文件夹下的“\x64\mingw\bin”,路径添加到环境变量Path
(2)新建QT项目,注意:选择编译套件的时候一定要选择和opencv编译时候用的套件一致
(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中的函数编写项目
(7)发布程序,使用windeployqt程序将qt的dll文件复制到程序目录下,然后运行程序,因为缺少opencv的dll文件会报错,程序无法运行,根据报错时提示缺少哪些dll文件,到opencv的install目录下复制到发布的应用程序同级目录下,问题解决。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

硬件---关于 埋孔、盲孔、通孔的介绍

简介 埋孔、盲孔、通孔 都是应用于PCB不同板层之间的换层。 简单区分: 埋孔: 藏在里面,从上往下或者从下往上都看不见; 盲孔:从表面看有个孔,但是看不见底; 通孔:从表面看底是穿的…

保姆级最新版Kali虚拟机安装和汉化中文教程

Kali虚拟机简介 Kali虚拟机是一款基于Debian的Linux发行版虚拟机操作系统,专为安全渗透测试和数字取证而设计。该虚拟机预装了许多渗透测试软件,包括Metasploit、BurpSuite、sqlmap、nmap以及Cobalt Strike等,这些工具都是为了进行网络安全测…

第十回 朱贵水亭施号箭 林冲雪夜上梁山-FreeBSD/Linux 控制台基础操作

林冲被众庄客捉住,吊在门楼下,正被打时,柴进来了,赶快把林冲救下来。原来这是柴进打猎用的小庄子, 林冲就把火烧草料场一事跟柴进详细的说了。柴进说兄弟真是命运多磨难啊。林冲住了几日,恐怕连累柴进&…

基于 OpenVINO, yolov5 推理

OpenVINO 是英特尔开发的一款功能强大的深度学习工具包,可实现跨多个硬件平台的优化神经网络推理。在本文中,我们讨论了 OpenVINO 的特性和优势,以及它如何与领先的计算机视觉平台 Viso Suite 集成,以构建和交付可扩展的应用程序。…

【项目搭建三】SpringBoot引入redis

添加依赖 本文使用spring data redis访问和操作redis&#xff0c;pom文件中加入以下依赖&#xff1a; <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </depende…

按键检测知识

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

70.Redis缓存优化实践(基于分类树场景)

文章目录 前言第一次优化第二次优化第三次优化第四次优化第五次优化 前言 分类树查询功能&#xff0c;在各个业务系统中可以说随处可见&#xff0c;特别是在电商系统中。 而在实际工作中&#xff0c;这样一个分类树查询&#xff0c;我们都不断的改进了好几次。这是为什么呢&…

成功解决「MySQL问题1」启动mysql时:发生系统错误5拒绝访问

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; ✈️公众号 | 热爱技术的小郑 。文章底部有个人公众号二维码。回复 Java全套视频教程 或 前端全套视频教程 即可获取 300G 教程资…

ctfshow反序列化(web254-web266)

目录 web254 web255 web256 web257 web258 web259 web260 web261 web262 web263 web264 web265 web266 web254 源码 <?php/* # -*- coding: utf-8 -*- # Author: h1xa # Date: 2020-12-02 17:44:47 # Last Modified by: h1xa # Last Modified time: 2020…

【机组】存储器、总线及堆栈寄存器实验的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《机组 | 模块单元实验》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 ​目录 &#x1f33a;一、 实验目的 …

拿捏!相关性分析,一键出图!皮尔逊、斯皮尔曼、肯德尔、最大互信息系数(MIC)、滞后相关性分析,直接运行!独家可视化程序!

适用平台&#xff1a;Matlab2020及以上 相关性分析是一种统计方法&#xff0c;用于衡量两个或多个变量之间的关系程度。通过相关性分析&#xff0c;我们可以了解变量之间的相互关系、依赖性&#xff0c;以及它们是如何随着彼此的变化而变化的。相关性分析通常包括计算相关系数…

第二百七十九回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何播放视频"相关的内容&#xff0c;本章回中将介绍如何选择单个图片文件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在前面章…

人工智能原理实验2(2)——罗马尼亚问题(贪婪搜索、A*搜索、BFS、DFS)

&#x1f9e1;&#x1f9e1;实验内容&#x1f9e1;&#x1f9e1; 根据上图以Zerind为初始状态&#xff0c;Bucharest为目标状态实现搜索&#xff0c;分别以贪婪搜索&#xff08;只考虑直线距离&#xff09;和A算法求解最短路径。 按顺序列出贪婪算法探索的扩展节点和其估价函数…

两个bbox的IoU计算步骤分析

IoU&#xff1a;交并比&#xff0c;数值上等于交集面积除以并集面积。 两个bbox的位置关系无外乎以上三种情况&#xff1a;&#xff08;1&#xff09;部分相交。&#xff08;2&#xff09;不相交。&#xff08;3&#xff09;包含。 计算步骤&#xff1a; 计算交集&#xff08…

亚像素边缘检测——基于模糊边缘模型的亚像素圆检测方法

论文&#xff1a;A Novel Subpixel Circle Detection Method Based on the Blurred Edge Model 期刊&#xff1a;IEEE Transactions on Instrumentation and Measurement, 71:1-11, 2021. 作者&#xff1a;Weihua Liu, Xianqiang Yang, Xuebo Yang, Hao Sun, Xinghu Yu, Huij…

【实战】SpringBoot自定义 starter及使用

文章目录 前言技术积累SpringBoot starter简介starter的开发步骤 实战演示自定义starter的使用写在最后 前言 各位大佬在使用springboot或者springcloud的时候都会根据需求引入各种starter&#xff0c;比如gateway、feign、web、test等等的插件。当然&#xff0c;在实际的业务…

Find My卡片正成为消费电子香饽饽,伦茨科技ST17H6x可以帮到您

今年CES许多公司发布支持苹果Find My的卡片产品&#xff0c;这种产品轻薄可充电&#xff0c;放在钱包、背包或者手提包可以防丢查找&#xff0c;在智能化加持下&#xff0c;防丢卡片使得人们日益关心自行车的去向。最新的防丢卡片与苹果Find My结合&#xff0c;智能防丢&#x…

AI绘画Stable Diffusion进阶使用

本文讲解&#xff0c;模型底模&#xff0c;VAE美化模型&#xff0c;Lora模型&#xff0c;hypernetwork。 文本Stable Diffusion 简称sd 欢迎关注 使用模型 C站&#xff1a;https://civitai.com/ huggingface&#xff1a;https://huggingface.co/models?pipeline_tagtext-to-…

单体架构、微服务和无服务器架构

前言 在这篇文章中&#xff0c;我将演示在决定使用单体架构、微服务架构和无服务器架构时的权衡的简化心智模型。目标是突显每种风格的固有优势和缺陷&#xff0c;并提供关于何时选择哪种架构风格的指导。 单体架构 对于小团队或项目来说是理想的入门架构。它简单易上手&…

hot100:07接雨水

题目链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 算法思想&#xff1a; 这里采取的是暴力解法和双指针的解法&#xff0c;但是这个题目还有其他的两种解法&#xff08;单调栈和动态规划&#xff0c;同学可以自行了解&#xff…