OpenCV --- 图像预处理(七)
OpenCV — 图像预处理(七)
文章目录
- OpenCV --- 图像预处理(七)
- 十七,图像轮廓特征查找
- 17.1 外接矩形
- 17.2 最小外接矩形
- 17.3 最小外接圆
十七,图像轮廓特征查找
- 图像轮廓特征查找其实就是他的外接轮廓。
- 应用:
- 图像分割
- 形状分析
- 物体检测与识别
- 根据轮廓点进行,所以要先找到轮廓。
- 先灰度化、二值化。目标物体白色,非目标物体黑色,选择合适的儿值化方式。
- 有了轮廓点就可以找到最上、最下、最左、最右的四个坐标, X m i n 、 X m a x 、 Y m i n 、 Y m a x X_{min}、X_{max}、Y_{min}、Y_{max} Xmin、Xmax、Ymin、Ymax。就可以绘制出矩形。
17.1 外接矩形
boundingRect(轮廓点)
num = cv.imread('txycl/images/num.png')
# 灰度图
gray = cv.cvtColor(num, cv.COLOR_BGR2GRAY)
# 二值化处理
_,binary = cv.threshold(gray, 127, 255, cv.THRESH_OTSU+cv.THRESH_BINARY_INV)
# 查找轮廓
contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv.drawContours(num, contours, -1, (0, 0, 255), 2)
cv.imshow('num', num)
# cv.waitKey(0)
# cv.destroyAllWindows()
# 外接矩形x,y,w,h = cv.boundingRect(contours[0])轮廓点
for cnt in contours:x, y, w, h = cv.boundingRect(cnt)cv.rectangle(num, (x, y), (x + w, y + h), (0, 255, 0), 2)# 显示效果
cv.imshow('num2', num)
cv.waitKey(0)
cv.destroyAllWindows()
17.2 最小外接矩形
- 最小外接矩形就是在外接矩形的基础上基于凸包进行旋转卡壳法
- 假如凸包如下
- 以其中的一条边为起始边,然后按照逆时针方向计算每个凸包点与起始边的距离,并将距离最大的点记录下来。
- 以a、b两点为起始边,并计算出e点离起始边最远,那么e到起始边的距离就是一个矩形的高度,因此我们只需要再找出矩形的宽度即可。对于矩形的最右边,以向量 a b ‾ \overline{{a b}} ab为基准,然后分别计算凸包点在向量 a b ‾ \overline{{a b}} ab上的投影的长度,投影最长的凸包点所在的垂直于起始边的直线就是矩形最右边所在的直线。
d点就是在向量 a b ‾ \overline{{a b}} ab上投影最长的凸包点,那么通过d点垂直于直线ab的直线就是矩形的右边界所在的直线。矩形的左边界的也是这么计算的,不同的是使用的向量不是 a b ‾ \overline{{a b}} ab而是 b a ‾ \overline{{b a}} ba
如上图所示,h点垂直于ab的直线就是以ab为起始边所计算出来的矩形所在的左边界所在的直线。其中矩形的高就是e点到直线ab的距离,矩形的宽是h点在向量上 b a ‾ \overline{{b a}} ba的投影加上d点在向量 a b ‾ \overline{{a b}} ab上的投影减去ab的长度,即:
w i d t h = ∣ b h ‾ ∣ × cos a + ∣ a d ‾ ∣ × cos θ − ∣ a b ‾ ∣ w i d t h=|\overline{{{b h}}}|\times\cos a+|\overline{{{a d}}}|\times\cos\theta-|\overline{{{a b}}}| width=∣bh∣×cosa+∣ad∣×cosθ−∣ab∣
于是我们就有了以ab为起始边所构成的外接矩形的宽和高,这样就可以得到该矩形的面积。然后再以bc为起始边,并计算其外接矩形的面积。也就是说凸多边形有几个边,就要构建几次外接矩形,然后找到其中面积最小的矩形作为该凸多边形的最小外接矩形
- API
contours, hierarchy = cv2.findContours(image_np_thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours为二值图像上查找所有的外部轮廓
rect = cv2.minAreaRect(cnt)
传入的cnt参数为contours中的轮廓,可以遍历contours中的所有轮廓,然后计算出每个轮廓的小面积外接矩形
- rect 是计算轮廓最小面积外接矩形:rect 结构通常包含中心点坐标
(x, y)
、宽度width
、高度height
和旋转角度angle
cv2.boxPoints(rect).astype(int)
cv2.boxPoints(rect)返回 是一个形状为 4行2列的数组,每一行代表一个点的坐标(x, y),顺序按照逆时针或顺时针方向排列
将最小外接矩形转换为边界框的四个角点,并转换为整数坐标
cv2.drawContours(image, contours, contourIdx, color, thickness)
- image:原图像,一般为 numpy 数组,通常为灰度或彩色图像。
- contours:一个包含多个轮廓的列表,可以用上一个api得到的 [box]
- contourIdx:要绘制的轮廓索引。如果设置为
-1
,则绘制所有轮廓。 - color:轮廓的颜色,可以是 BGR 颜色格式的三元组,例如
(0, 0, 255)
表示红色。 - thickness:轮廓线的粗细,如果是正数,则绘制实线;如果是 0,则绘制轮廓点;如果是负数,则填充轮廓内部区域。
#最小轮廓矩形
# 读取图像
num = cv.imread("txycl/images/num.png")
# 灰度化
gray = cv.cvtColor(num, cv.COLOR_BGR2GRAY)
# 二值化
thresh, binary = cv.threshold(gray, 127, 255, cv.THRESH_OTSU + cv.THRESH_BINARY_INV)
# 查找轮廓
cnts, h = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
# 遍历每个轮廓
for cnt in cnts:# 获取外接矩形x, y, w, h = cv.boundingRect(cnt)# 绘制外接矩形cv.rectangle(num, (x, y), (x + w, y + h), (255, 0, 0), 2, cv.LINE_AA)# 获取凸包hull = cv.convexHull(cnt)# 绘制凸包cv.polylines(num, [hull], True, (0, 0, 255), 2, cv.LINE_AA)# 获取最小外接矩形rect = cv.minAreaRect(cnt)box = cv.boxPoints(rect).astype(np.int32)# 绘制最小外接矩形cv.drawContours(num, [box], -1, (0, 255, 0), 2, cv.LINE_AA)
# 显示图像
cv.imshow("num", num)
cv.waitKey(0)
cv.destroyAllWindows()
17.3 最小外接圆
寻找最小外接圆使用的算法是Welzl算法。Welzl算法基于一个定理:希尔伯特圆定理表明,对于平面上的任意三个不在同一直线上的点,存在一个唯一的圆同时通过这三个点,且该圆是最小面积的圆(即包含这三个点的圆中半径最小的圆,也称为最小覆盖圆
- API
cv2.minEnclosingCircle(points) -> (center, radius)
参数说明:
points
:输入参数图片轮廓数据
返回值:
center
:一个包含圆心坐标的二元组(x, y)
。radius
:浮点数类型,表示计算得到的最小覆盖圆的半径。
cv2.circle(img, center, radius, color, thickness)
img
:输入图像,通常是一个numpy数组,代表要绘制圆形的图像。center
:一个二元组(x, y)
,表示圆心的坐标位置。radius
:整型或浮点型数值,表示圆的半径长度。color
:颜色标识,可以是BGR格式的三元组(B, G, R)
,例如(255, 0, 0)
表示红色。thickness
:整数,表示圆边框的宽度。如果设置为-1
,则会填充整个圆。
#最小外接圆
# 读取图像
num = cv.imread("txycl/images/num.png")
# 灰度化
gray = cv.cvtColor(num, cv.COLOR_BGR2GRAY)
# 二值化
thresh, binary = cv.threshold(gray, 127, 255, cv.THRESH_OTSU + cv.THRESH_BINARY_INV)
# 查找轮廓
cnts, h = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
# 遍历每个轮廓
for cnt in cnts:# 获取外接圆(x, y), radius = cv.minEnclosingCircle(cnt)# 绘制外接圆center = (int(x), int(y))radius = int(radius)cv.circle(num, center, radius, (255, 0, 0), 2, cv.LINE_AA)#显示图像
cv.imshow("num", num)
cv.waitKey(0)
cv.destroyAllWindows()
相关文章:
OpenCV --- 图像预处理(七)
OpenCV — 图像预处理(七) 文章目录 OpenCV --- 图像预处理(七)十七,图像轮廓特征查找17.1 外接矩形17.2 最小外接矩形17.3 最小外接圆 十七,图像轮廓特征查找 图像轮廓特征查找其实就是他的外接轮廓。应用…...
【计算机网络】信息时代的数字神经系统
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:Python TCP服务器案例2:网络带宽测试 运行结果验证 三、性能对比测试…...
Adriuno:编程语言基础
Adriuno主要的编程语言是C语言,使得使用者不需要掌握特殊的编程语言,变得更加容易上手。 一、函数 Arduino提供了许多函数,其功能是控制 Arduino开发板,进行数值计算等,包括数字I/O函数、模拟I/O函数、高级I/O函数、时…...
二叉搜索树的实现与应用场景
本章目标 1.二叉搜索树的概念 2.二叉搜索树的性能分析 3.二叉搜索树的实现 4.二叉搜索树的key/key-value的实现场景 1.二叉搜索树的概念 二叉搜索树又叫二叉排序树,它是具有以下性质的树 1.它的左子树不为空,并且左子树上的值都小于根节点 2.它的右子树不为空,并且右子树上的…...
单例模式介绍
单例模式大家都很清楚,最常见的是饿汉式与懒汉式。也有不常见的静态内部类式与枚举式以及,懒汉式的线程安全版本。 单例模式常被用于全局式的配置管理(数据库连接池,日志管理器),资源共享(线程池…...
Pycharm 代理配置
Pycharm 代理配置 文章目录 Pycharm 代理配置1. 设置系统代理1.1 作用范围1.2 使用场景1.3 设置步骤 2. 设置 python 运行/调试代理2.1 作用范围2.2 使用场景2.3 设置步骤 Pycharm 工具作为一款强大的 IDE,其代理配置在实际开发中也是必不可少的,下面介绍…...
springboot入门-repository数据访问层JPA和mybatis
在 Spring Boot 中,Repository 接口是数据访问层(DAO)的核心抽象,而 JpaRepository 和 MyBatis 的实现方式有显著不同。以下是详细解释: 1. JPA 的 Repository 接口为什么使用 interface? (1) 基于接口的动…...
代码随想录算法训练营Day31 | 56. 合并区间 738.单调递增的数字
56. 合并区间 问题描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 解决方式…...
【教学类-102-19】蝴蝶三色图作品1——卡纸蝴蝶(滴颜料按压对称花纹)A4横版最大号22.85CM
背景需求: 前期做了18次实验,基本实现了三色图三线的各种变化效果和16种图纸大小的批量导入 今天开始制作具体可用的学具——黑卡纸蝴蝶(滴颜料按压对撑颜色) 【教学类-102-11】蝴蝶外轮廓01——Python对黑白图片进行PS填充三种颜色+图案描边+图案填充白色+制作1图2图6图…...
Claude系列模型-20250426
文章目录 Claude 3.7 Sonnet - "Our most intelligent model yet"Claude 3.5 Haiku - "Fastest model for daily tasks"Claude 3.5 Sonnet (Oct 2024)Claude 3 Opus总结Claude 3.7 Sonnet - “Our most intelligent model yet” 特点: 这是目前Claude系列…...
ADC单通道采集实验
设置的步骤如下; #include "adc.h"ADC_HandleTypeDef adc_handle {0}; void adc_init(void) {adc_handle.Instance ADC1; //ADC的基地址adc_handle.Init.DataAlign ADC_DATAALIGN_RIGHT; //…...
启动你的RocketMQ之旅(五)-Broker详细——消息传输
前言: 👏作者简介:我是笑霸final。 📝个人主页: 笑霸final的主页2 📕系列专栏:java专栏 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一…...
100个节点的部署,整合Docker、Kubernetes和Jenkins的详细设计
一、架构设计概览 组件角色: Docker:应用容器化封装,确保环境一致性。Kubernetes(K8s):自动化容器编排,管理多节点集群的调度、扩缩容和自愈。Jenkins:CI/CD流水线驱动,实现代码到生产的自动化流程。集群规模: Master节点:3个(高可用,避免单点故障)。Worker节点:…...
神经网络与计算机视觉
2016 年,随着 AlphaGo 在围棋比赛中击败李世石,“人工智能”、“神经网络”、“深度 学习”等字眼便越来越多的出现在大众眼前,智能化好像成为一种不可逆转的趋势,带给大家新奇感的同时也带来了一丝忧惧:在不远的未来,机器是否真的拥有思维和情感?《终结者》中天网大战人…...
openEuler对比CentOS的核心优势分析
openEuler对比CentOS的核心优势分析 在开源操作系统领域,openEuler与CentOS均占据重要地位,但随着CentOS维护策略的调整(如CentOS 8停止维护,转向CentOS Stream),越来越多的用户开始关注国产化替代方案。o…...
高性能电脑系统优化工具Advanced SystemCare PRO v18.3.0.240 解锁永久专业版
软件介绍 IObit Advanced SystemCare,系统清理维护与安全防护软件,大幅提升整体系统性能和安全!一键AI智能模式,全面扫描优化修复系统,拥有性能加速模式、系统优化、网络加速、启动项优化、软件更新、实时监视清理、隐…...
【C语言练习】005. 编写表达式并确定其值
【C语言练习】005. 编写表达式并确定其值 005. 编写表达式并确定其值示例 1:算术表达式计算过程:最终结果:示例 2:关系和逻辑表达式计算过程:最终结果:示例 3:复合赋值和算术表达式计算过程:最终结果:示例 4:位运算表达式计算过程:最终结果:示例 5:综合表达式计算…...
力扣面试150题--合并两个有序链表和随机链表的复制
Day 33 题目描述 思路 常规题目,比较list1和list2节点的值,取出较小值扩展链表,最后其中一个遍历完直接拼接另外一个即可(归并排序) /*** Definition for singly-linked list.* public class ListNode {* int v…...
测试用例的设计
组合原则:多个选项有效数据建议组合使用(正向功能)、单个选项无效数据组合其他选项有效数据使用(逆向功能) 一、针对登录模块设计测试用例: 1.账号:已注册手机号、已注册邮箱、为空、未注册手机号、未注册邮箱 2.密码:注册密码、为空、错误密码 3.验证码:正确、过期、错误 …...
关于TCP三次握手和四次挥手的疑点
参考文章:浅谈TCP三次握手和四次挥手 1、三次握手的作用 (1)确保双方收到对方的初始序列号:客户端发送SYN包,服务器回复SYN-ACK包,客户端再回复ACK包,确保双方都接收到对方的序列号。 …...
逆向|dy|a_bogus|1.0.1.19-fix.01
2025-04-26 请求地址:aHR0cHM6Ly93d3cuZG91eWluLmNvbS91c2VyL01TNHdMakFCQUFBQV96azV6NkoyMG1YeGt0eHBnNkkzRVRKejlyMEs3d2Y2dU9EWlhvd2ttblZWRnB0dlBPMmMwN2J0WFotcVU4V3M 个人主页的视频数据 我们需要逆向这个接口,所以现在需要分析这个请求, 分析这几个数据包可以发现: 只有…...
【软考-架构】13.5、中间件
✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 中间件技术典型应用架构 中间件技术 在分布式系统环境中,出于操作系统和应用程序之间的软件。 主要的中间件有五类: 数据库访问中间件࿱…...
【Redis】基础2:作为缓存
文章目录 1. 一些概念2. 主动更新策略/缓存设计模式2.1 cache-aside pattern(lazy loading)2.2 read-through pattern(针对读操作)2.3 write-through pattern2.4 write behind pattern(write back pattern)…...
豆包,Kim,deepseek对比
以下是豆包、Kimi、DeepSeek的对比与应用: 对比 - 核心技术:DeepSeek-R1完全依赖强化学习驱动,跳过监督微调阶段。Kimi k1.5采用“轻量级SFT预热RL优化”的混合策略。 - 多模态支持:Kimi k1.5支持文本与图像的多模态联合推理。De…...
L2-005 集合相似度
L2-005 集合相似度 - 团体程序设计天梯赛-练习集 给定两个整数集合,它们的相似度定义为:Nc/Nt100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 …...
33.状态压缩动态规划
一、算法内容 1.简介 若元素数量比较小(不超过 20 20 20)时,想要存储每个元素取或不取的状态时, 可以借助位运算将状态压缩。 需要借助状态压缩过程的动态规划就是状态压缩 DP(很多地方会简称为状压 DP)…...
WSL 中 nvidia-smi: command not found的解决办法
前言 在使用基于 Linux 的 Windows 子系统(WSL)时,当我们执行某些操作后,可能会遇到输入 nvidia-smi 命令却无法被系统识别的情况。 例如,在终端中输入nvidia-smi 后,系统返回提示 -bash: nvidia-smi: co…...
Linux 进程控制
文章目录 1. 进程创建1.1 fork1.2 写时拷贝 2.进程终止2.1 退出码2.2 进程如何返回退出码 3. 进程等待3.1 wait3.1.1 阻塞等待3.1.2 退出码与退出信号 3.2 waitpid 1. 进程创建 1.1 fork 我们可以使用fork函数来创建子进程,创建子进程后,父子进程之间就…...
使用MobaXterm远程登录Ubuntu系统:SSH服务配置教程
一、MobaXterm介绍 MobaXterm官网:https://mobaxterm.mobatek.net/ MobaXterm类似于Xshell,是一个工具箱,功能比Xshell多。 直接去官网下载安装就可以,本文主要介绍开启Ubuntu的ssh服务,并通过MobaXterm实现远程登录…...
直线模组精度测试的标准是什么?
直线模组的精度测试是确保其性能和稳定性的重要环节。那么,大家知道直线模组精度测试的标准是什么吗? 1、定位精度:以最大行程为基准长度,用从基准位置开始实际移动的距离与指令值之间的最大误差的绝对值来表示。一般来说…...
RK3568 Debian调试记录
文章目录 1、环境介绍2、前言3、debian目录结构3.1、脚本调用顺序 4、编译debian4.1、构建debian编译所需的环境4.2、编译debian4.3、打包 5、系统启动6、debian适配6.1、新增板级配置单6.2、USB6.3、Wi-Fi / BT6.4、屏幕旋转6.5、触摸旋转6.6、时钟 7、测试8、总结 1、环境介绍…...
来自 Bisheng 关于微调的内容总结
来自 Bisheng 关于微调的内容总结 0. 引言1. 关于微调的总结 0. 引言 这篇文章的内容(主要是截图)是来自 Bisheng 关于微调的内容总结,内容来源于 B 站Up主七吟覃_BISHENG负责人的视频,感兴趣的可以观看原视频。 1. 关于微调的总…...
Git 工具的安装
目录 Git 工具介绍 Git 工具安装 创建本地仓库 配置本地仓库 Git 版本控制基本原理 本期开始,我们将学习如何使用 Git 工具,实现多版本控制。 Git 工具介绍 要了解 Git 工具我们得先了解版本控制器的概念。 有这样一个场景,如下图所…...
任务管理系统,Java+Vue,含源码与文档,科学规划任务节点,全程督办保障项目落地提效
前言: 在当今快节奏的工作环境中,高效的任务管理是确保项目按时完成、资源合理分配及团队协作顺畅的关键。任务管理系统作为提升工作效率的重要工具,通过数字化手段帮助用户组织、跟踪和完成各类任务。本文将详细阐述任务管理系统的五大核心…...
JavaScript基础知识合集笔记1——数据类型
文章目录 JavaScript中的数据类型基本数据类型引用类型存储区别 JavaScript中的数据类型 基本数据类型和复杂类型 基本数据类型 基础类型包含六种:Number、Bigint、String、Boolean、Undefined、null、symbol Number(特殊值NaN,意为“不是数值”) c…...
2025.04.26-美团春招笔试题-第四题
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 04. 图像智能降维处理 问题描述 卢小姐是一家图像处理公司的算法工程师,她正在开发一种高效的图像压缩算法。该算法基于奇异值分解(SVD)技术,通过保留图像矩阵中最重要的特征,在…...
测试基础笔记第十三天
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、流程控制语句-判断语句1.判断语句2.逻辑运算符3.elif多重判断4.if的嵌套5.if与逻辑运算符结合1.and2.or3.not 设计测试用例二、流程控制语句-循环语句1.while语…...
【昇腾】PaddleOCR转om推理
文章目录 1. 使用Paddle框架推理1.1 安装1.2 推理 2. paddle 转 ONNX3. 转om4. Ais_bench 命令推理5. Ais_bench 编写推理代码 概要: PyTorch官方提供了昇腾插件包,安装后虽然可以支持PytorchOCR和PaddlePaddle的推理任务,但性能通常低于GPU。…...
【数据融合】基于拓展卡尔曼滤波实现雷达与红外的异步融合附matlab代码
一、问题分析与技术难点 1. 传感器特性对比 传感器测量维度优势局限性噪声模型雷达距离 $ r $、方位角 $ \theta $、速度 $ v $测距精度高、全天候工作角度分辨率低、易受多径干扰高斯噪声,协方差矩阵 $ R_r \text{diag}(\sigma_r^2, \sigma_\theta^2, \sigma_v^…...
第一部分:网页的骨架 —— HTML
这目录 前言1. 初识 HTML:搭建地基和框架1.1 小例子: 创建一个最简单的 HTML 页面,包含 "Hello World"。1.2 练习 2. 常用文本与内容标签:填充墙体和房间2.1 小例子: 创建一个包含个人简介(使用标…...
RTMP 协议解析 1
介绍 📖 什么是 RTMP? RTMP协议(Real-Time Messaging Protocol,实时消息传输协议)是由Adobe公司(最初由Macromedia开发)设计的一种用于实时传输音频、视频和数据流的网络协议,主要…...
c++初始化数组
1.前言 话说数组是n年前的事了,我为啥现在又提到它呢?因为很多人不会初始化数组,所以今天我来教教大家 2.初始化数组 初始化数组就是定义数组,就像这样 int a[5]{0}; 这样是a[0]到a[5]全都等于0 如果要输出这个数组…...
支持Win和Mac的批量图片压缩方法
软件介绍 如果你的图片太大,传输或上传总是卡壳,那就需要一款好用的图片压缩工具了。今天推荐的这款工具支持Windows和Mac双系统,简直是图片压缩界的"变形金刚"! 图压(图片压缩双系统版) …...
autodl(linux)环境下载git-lfs等工具及使用
一、git-lfs工具下载 #初始化git.lfs命令 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash sudo apt-get install git-lfs git lfs install 二、 huggingface-cli工具下载及使用 Linux设置huggingface的镜像: ex…...
云原生--核心组件-容器篇-3-Docker核心之-镜像
1、定义与作用 定义: Docker镜像是一个只读的模板,包含运行应用程序所需的所有内容,包括代码、依赖库、环境变量、配置文件等。简单来说,Docker镜像是一个轻量级、独立、可执行的软件包,它包含了运行某个软件所需的所有…...
Dify与n8n深度对比:AI应用开发与自动化工作流的双轨选择
Dify与n8n深度对比:AI应用开发与自动化工作流的双轨选择 在数字化转型加速的2025年,Dify和n8n作为两大主流工具,分别代表了AI应用开发与自动化工作流领域的顶尖解决方案。本文将从核心定位、功能特性、使用场景等维度展开对比,为…...
AI算法优化建筑形态与能耗管理 实现方案和技术架构
以下是基于AI算法优化建筑形态与能耗管理的实现方案与技术架构,结合行业实践与前沿技术趋势,分层次解析核心要素及实施路径: 一、技术架构设计 1. 数据采集与感知层 多源数据融合 传感器网络:部署温湿度、CO₂浓度、光照、人流密度等传感器,构建实时数据采集体系(如北京…...
【互联网架构解析】从物理层到应用层的全栈组成
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现(Python网络请求)运行结果验证 三、性能对比测试方法论量化数据对比结果分…...
Redis和MQ的区别
redis是一个高性能的key-value数据库,支持消息推送功能,可以当做一个轻量级的队列服务器使用。 redis只是提供一个高性能的、原子操作内存键值队,具有高速访问能力,虽然可以做消息队列的存储,但不具备消息队列的任何功…...
多系统安装经验,移动硬盘,ubuntu grub修改/etc/fstab 移动硬盘需要改成nfts格式才能放steam游戏
笔记本一个系统,移动硬盘两个系统,当前系统sda4.jpg 移动硬盘需要再装一个linux会有boot/efi,启动的时候grub界面才能识别,单linux没有efi别的电脑识别不到 没efi甚至启动不了grub 按下f6.jpg 看看笔记本grub能不能识别得到移动硬…...