先上效果图:

因为是一个为了尝试跑通的demo,美观、功能都先忽略哈。

一、环境

版本下载链接备注
cmakecmake-4.1.0-rc2-windows-x86_64.msihttps://cmake.org/download/
make
x86_64-15.1.0-release-posix-seh-ucrt-rt_v12-rev0.7z
https://github.com/niXman/mingw-builds-binaries/releases各种版本可以deepseek问一下区别
OpenCVSource code(tar.gz)4.12.0https://github.com/opencv/opencv/releases/tag/4.12.0一定要下载opencv源码自己用mingw编译不能直接用install的vc16
Qtqt-online-installer-windows-x64-4.10.0https://www.qt.io/download-qt-installer-oss安装的时候勾选“个人用户”

环境变量:

其他依赖比如numpy,我直接用的conda环境中的python

如果需要用到其他库,比如OpenBLAS、Eigen、CUDA、cuDNN、Glog、Gflags、HDF5、OGRE、Boost、IPPICV IW、Caffe、ITT等,你需要提前编译好这些库,如果你缺少这些库,你必须在之后的CMake中禁用相关的选项(有些会被自动禁用)。相关依赖库在编译请自行百度。

二、OpenCV编译

问:为什么要自己编译opencv?

答:Qt需要的是MingW编译的库,但是官方提供的是MSVC(vc16)编译的。

vc16对应的是Visual Studio 2019,vc17对应Visual Studio 2022

关于Visual Studio编译可以参考这个博客:

YOLOv8 Windows c++推理_yolov8 win cpp-CSDN博客

这里重点要讲的是opencv编译,在这卡了一周,其他的只需要捣鼓一会就能搞通。

1.打开CMake-gui.exe

没有桌面图标的话,在安装目录CMake\bin下。

然后开始自动配置了,等绿条读完

会出现各种红色警告,先不用管。

2.配置

这是我最新编译成功的配置,可以直接抄,勾选完点Configure即可

可以直接在搜索框输入关键词,然后进行勾选,必要的几个默认没勾选的需要自己勾一下:

WITH_OPENGL、WITH_QT、WITH_ONNX、BUILD_opencv_highgui

如果带cuda,则把cuda项都勾上,关于cuda、cudnn见此链接:

opencv加载cuda不成功 opencv与cuda版本的匹配_mob64ca1402d47a的技术博客_51CTO博客

后面都是WITH就不在展示了,我都是默认的

3.make

打开D:\opencv-4.12.0\mingwbuild目录,空白处shift+鼠标右键 - 在此处打开PowerShell

输入make -j 8,这样就开始编译了,8指使用的cpu线程数,越多编译越快。

过程中只要没停,啥看不懂的警告都不用管,如果停了:

(1)就回第2步,把报错相关的那个东西勾去掉,重新生成配置再编译。

(2)如果报错的在D:\opencv\modules有对应文件夹(每个点进去都有CMakeLists.txt),可以尝试先进这个文件夹,单独编译生成这个模块试试(这个方法我没试过,待验证)

我在这里卡了好几天,耐心点多试几次,由于报错各种各样,这里也没法总结,遇到了评论区沟通吧。(有关download的,可能是网络原因,还有出现比较多的是highgui,但是我没做任何处理重复了几次又好了)

4.然后在你Qt项目的CMakeLists.txt中指定opencv路径即可

三、Qt编译报错处理

这里先记录两个主要报错点

1.onnx模型转换问题

报错关键词:ERROR during processing node with 2 inputs and 1 outputs

解决办法:Opencv和opset版本要对应,我跑通的版本是:Opencv4.12.0对应opset=17

from ultralytics import YOLOmodel = YOLO(r'yolov8n.pt')
model.export(format="onnx", simplify=True, dynamic=False, opset=17)
OpenCV 版本支持的最高 opset关键算子支持动态形状支持
4.5.xopset 11-12基础卷积/池化/激活层 ✅
部分不支持:CastConstantOfShapeArgMax ❌ 45
仅静态输入(需固定尺寸)❌ 5
4.6-4.7opset 13-14新增 LayerNormalizationGELU ✅
部分支持 SplitClip 6
有限动态批次维度 ✅
4.8opset 15支持 QLinearSoftmaxConvTranspose ✅
INT8 量化模型兼容 6
动态批次/高度/宽度 ✅
4.9+opset 16-18完整支持 AttentionEinsumInstanceNorm ✅
Transformer 模型实验性支持 8
全动态输入 ✅

2.无法定位程序输入点,...于动态链接库xxx上

报错关键词:无法定位程序输入点,...于动态链接库xxx上

解决办法:在D:\mingw64\bin文件夹(mingw安装路径)下有库文件libstdc++-6.dll复制到C:\Windows\System32下即可。

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

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

相关文章

day060-zabbix监控各种客户端

文章目录0. 老男孩思想-一个人的背书1. zabbix各种客户端1.1 Windows Server监控1.2 网络设备监控1.3 java应用监控1.4 前端监控java程序故障2. 相关项监控3. 思维导图0. 老男孩思想-一个人的背书 学历、能力、态度、特长、人品、口碑(身边的人、领导) …

OpenCV 官翻 2 - 图像处理

文章目录色彩空间转换目标色彩空间转换目标追踪如何确定要追踪的HSV值?练习图像的几何变换目标变换缩放翻译旋转仿射变换透视变换其他资源图像阈值处理目标简单阈值化自适应阈值化大津二值化法Otsu二值化算法原理其他资源练习图像平滑处理目标二维卷积(图…

动态路由协议基础

一、动态路由协议简介2.动态路由协议的基本功能二、动态路由协议分类对比项距离矢量(如 RIP)链路状态(如 OSPF)信息来源只听直接邻居说收集全网链路状态,自己建 “地图”计算逻辑邻居给的距离 1,简单累加用…

netstat -tunlp | grep的作用

​​一、命令整体结构解析​​命令由两部分通过管道符 |连接:netstat -tunlp:核心网络状态统计命令,输出指定类型的网络连接信息;grep:文本搜索工具,用于过滤 netstat的输出结果,仅保留符合特定…

教育数字化革命:低代码破局与未来展望

当下,教育领域正经历前所未有的深刻变革——教育数字化转型。这并非简单的技术叠加,而是从教育理念到模式的全方位重塑,已成为推动教育高质量发展、助力我国迈向教育强国的核心驱动力。数字技术正以前所未有的速度和力度,全方位重…

云服务器磁盘IO性能优化的测试与配置方法

云服务器磁盘IO性能优化的测试与配置方法在云计算环境中,磁盘IO性能直接影响着应用程序的响应速度和系统整体稳定性。本文将深入解析云服务器磁盘IO性能优化的关键技术路径,从测试方法论到配置调整方案,帮助运维人员突破存储瓶颈。我们将重点…

Python Day22 - 复习日

浙大疏锦行 Pythonday22 本周学习内容主要是有关降维的一些内容以及基本的数组操作: 数组的常见操作以及shape聚类算法的选择以及常用评估指标、聚类后的结果分析特征筛选方法:方差筛选、lasso等SVD进行降维常见的降维算法:LDA、PCA等

飞算JavaAI文字需求描述功能:高效驱动项目开发的智能解决方案

在数字化开发浪潮中,如何将模糊的需求快速转化为具体的开发指令,是提升项目效率的关键环节。飞算JavaAI推出的文字需求描述功能,以自然语言交互为核心,为开发者和项目管理者提供了一套高效、精准的需求转化与项目管理方案&#xf…

探索自然语言处理NLP的Python世界

文本预处理:数据清洗与标准化 在自然语言处理(NLP)的旅程中,文本预处理是至关重要的第一步。原始文本数据往往包含噪声、不一致性以及各种格式问题,直接影响后续模型的性能。文本预处理旨在将文本转化为统一、规范的格…

ECMAScript(简称 ES)和 JavaScript 的关系

ECMAScript(简称ES)和JavaScript的关系常常令人困惑。简单来说:ECMAScript是标准,JavaScript是实现。以下从多个维度详细解析它们的区别与联系: 一、定义与核心关系ECMAScript 标准化规范:由ECMA国际&#…

笔试——Day16

文章目录第一题题目思路代码第二题题目:思路代码第三题题目:思路代码优化(滑动窗口)第一题 题目 字符串替换 思路 模拟 当遍历到正常字符时,直接加入结果答案;当遍历到占位符时,按顺序使用arg…

第十四届蓝桥杯青少Scratch国赛真题——太空大战

明天蓝桥杯大赛青少组省赛报名就开始报名了,小伙伴们记得设好闹钟,去抢报呀~(去年是名额有限,全靠抢,今年估计也是,大家伙记得快点报名就对了)报名通道将于📅2025年7月23日13&#x…

小玩 Lifecycle

导包 [versions] lifecycle_version "2.3.1"[libraries] androidx-viewmodel { group "androidx.lifecycle", name "lifecycle-viewmodel-ktx", version.ref "lifecycle_version" } androidx-livedata { group "androidx…

HttpSecurity详解

HttpSecurity 是 Spring Security 中用于配置 HTTP 安全性的核心类。它允许你定义各种安全规则和过滤器,以保护 Web 应用程序中的不同 URL 和请求。下面是对 HttpSecurity 中常见配置的详细解析,以及每个配置的意义。 1. csrf 配置: http.csrf(customizers -> customi…

FFmpeg+javacpp中仿ffplay播放

FFmpegjavacpp中仿ffplay播放1、[ffplay 基于 SDL 和 FFmpeg 库的简单媒体播放器](https://ffmpeg.org/ffplay.html)2、FFmpeg帧捕获器 : FFmpegFrameGrabber2.1 grabSamples()2.2 grabImage()2.3 grab() 获取音视频帧FFmpegjavacppjavacv使用 ffmpeg-6.0\fftools\ffplay.c 1、…

【后端】 FastAPI

🚀 FastAPI 是什么?FastAPI 是一个用于构建 Web API 的 Python 框架。可以理解成:🧰 “一个工具箱,让你用 Python 写出能被浏览器、App、小程序调用的接口(API)。”🔧 那什么是 API&…

不画一张架构图讲透架构思维

👉目录1 架构的定义2 架构是为了解无解的问题-分工3 抱残守缺的好架构应该是怎样的4 适可而止的设计、恰如其分的架构与成败论英雄本文深入探讨软件架构的本质与设计方法论,从架构定义演变到现代架构实践挑战,系统分析架构设计面临的业务复杂…

SpringCloudGateWay 使用nacos网关自动负载均衡

安装好nacos后(参考以前文章SpringCloud 使用nacos注册服务,使用openFeign调用服务-CSDN博客) 新建一个项目,添加 spring-cloud-starter-gateway-server-webmvc spring-cloud-loadbalancer spring-cloud-starter-alibaba-nacos-d…

Hiredis 构建 Redis 命令实战指南

一、同步命令构造 1.1 redisCommand(fmt, …) 最常用的同步接口即 redisCommand,其原型如下: void *redisCommand(redisContext *c, const char *format, ...);参数 c:已连接的 redisContext*format:与 printf 类似的格式字符串//…

【数据库】国产数据库的新机遇:电科金仓以融合技术同步全球竞争

7月15日,国产数据库厂商中电科金仓(北京)科技股份有限公司(以下简称“电科金仓”)在北京举行了一场技术发布会,集中发布四款核心产品:AI时代的融合数据库KES V9 2025、企业级统一管控平台KEMCC、…