当前位置: 首页 > news >正文

基于Python的施工图与竣工图对比小工具开发方案

基于Python的施工图与竣工图对比小工具开发方案

在这里插入图片描述


一、引言

在工程建设领域,施工图与竣工图的对比是项目验收的关键环节。传统人工对比方式效率低、易出错,本文基于Python开发一款自动化对比工具,支持快速检测图纸差异并生成可视化报告,大幅提升工程审核效率。

二、技术方案概述

核心功能

  1. 图像预处理:灰度化、降噪,统一图纸格式
  2. 特征匹配:基于ORB算法提取图纸特征点并匹配
  3. 差异检测:通过单应性变换对齐图纸,计算像素级差异
  4. 报告生成:生成含差异标记的PDF报告,可视化展示修改区域

在这里插入图片描述

三、环境准备与依赖安装

1. 系统要求

  • Python 3.9+(推荐3.10)
  • Windows/macOS/Linux(本文以Windows为例)

2. 安装依赖库

pip install opencv-python matplotlib reportlab pyinstaller
  • opencv-python:图像处理与特征检测
  • matplotlib:临时图像保存(用于报告生成)
  • reportlab:生成专业PDF报告
  • pyinstaller:后期打包EXE文件

四、核心模块架构设计

四层架构设计

输入模块
预处理模块
特征匹配模块
差异检测模块
报告生成模块
输出模块

关键技术点

  1. ORB特征检测:结合FAST关键点检测和BRIEF描述子,兼具速度与精度
  2. 单应性变换(Homography):通过findHomography计算图纸变换矩阵,解决视角/缩放差异
  3. 像素级差异计算:使用absdiff计算灰度差异,二值化后高亮显示修改区域

五、详细开发步骤

1. 图像预处理模块

import cv2def preprocess_image(image_path):"""读取图像并转换为灰度图"""image = cv2.imread(image_path)# BGR转灰度(OpenCV默认BGR通道)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 可选:高斯模糊降噪# gray = cv2.GaussianBlur(gray, (5, 5), 0)return gray

2. 特征提取与匹配模块

def extract_and_match_features(img1, img2):"""ORB特征提取与BF匹配"""orb = cv2.ORB_create()  # 初始化ORB检测器# 检测关键点与描述符kp1, des1 = orb.detectAndCompute(img1, None)kp2, des2 = orb.detectAndCompute(img2, None)# 暴力匹配(Hamming距离)bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)matches = bf.match(des1, des2)# 按距离排序(距离越小匹配度越高)matches = sorted(matches, key=lambda x: x.distance)return kp1, kp2, matches

3. 差异检测模块

def detect_differences(img1, img2, kp1, kp2, matches):"""基于单应性变换的差异检测"""# 取前10个最佳匹配点(实际项目建议动态调整)good_matches = matches[:10]src_pts = np.float32([kp1[m.queryIdx].pt for m in good_matches]).reshape(-1,1,2)dst_pts = np.float32([kp2[m.trainIdx].pt for m in good_matches]).reshape(-1,1,2)# 计算单应性矩阵(RANSAC算法抗噪声)M, _ = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)# 透视变换对齐图纸aligned_img = cv2.warpPerspective(img1, M, (img2.shape[1], img2.shape[0]))# 计算灰度差异(绝对值)diff = cv2.absdiff(aligned_img, img2)# 二值化处理(差异阈值30可调)_, binary_diff = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)return binary_diff

4. 报告生成模块

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvasdef generate_report(img1, img2, diff, report_path):"""生成含对比图的PDF报告"""c = canvas.Canvas(report_path, pagesize=letter)width, height = letter  # A4纸尺寸(210mm=792pt, 297mm=1098pt)# 保存临时图像(需转换为RGB格式,OpenCV默认BGR)cv2.imwrite('img1.png', cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR))cv2.imwrite('img2.png', cv2.cvtColor(img2, cv2.COLOR_GRAY2BGR))cv2.imwrite('diff.png', cv2.cvtColor(diff, cv2.COLOR_GRAY2BGR))# 绘制对比图(左:施工图,中:竣工图,下:差异图)c.drawImage('img1.png', 50, 400, width=300, height=400)  # 左上角坐标(50,400)c.drawImage('img2.png', 350, 400, width=300, height=400)c.drawImage('diff.png', 50, 50, width=600, height=300)# 添加标题与说明c.setFont('Helvetica-Bold', 20)c.drawString(200, 1000, '施工图 vs 竣工图对比分析报告')c.setFont('Helvetica', 14)c.drawString(100, 380, '施工图(原图)')c.drawString(400, 380, '竣工图(对比图)')c.drawString(150, 30, '差异区域(白色为修改部分)')c.save()  # 保存PDF

六、完整代码实现

import cv2
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvasdef preprocess_image(image_path):image = cv2.imread(image_path)return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)def extract_and_match_features(img1, img2):orb = cv2.ORB_create()kp1, des1 = orb.detectAndCompute(img1, None)kp2, des2 = orb.detectAndCompute(img2, None)bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)return bf.match(des1, des2)def detect_differences(img1, img2, matches):good_matches = matches[:10]src_pts = np.float32([img1[kp.queryIdx].pt for kp in good_matches]).reshape(-1,1,2)dst_pts = np.float32([img2[kp.trainIdx].pt for kp in good_matches]).reshape(-1,1,2)M, _ = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)aligned = cv2.warpPerspective(img1, M, (img2.shape[1], img2.shape[0]))diff = cv2.absdiff(aligned, img2)_, binary = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)return binarydef generate_report(img1, img2, diff, report_path):cv2.imwrite('temp1.png', cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR))cv2.imwrite('temp2.png', cv2.cvtColor(img2, cv2.COLOR_GRAY2BGR))cv2.imwrite('temp_diff.png', cv2.cvtColor(diff, cv2.COLOR_GRAY2BGR))c = canvas.Canvas(report_path, pagesize=letter)c.drawImage('temp1.png', 50, 500, 300, 400)c.drawImage('temp2.png', 350, 500, 300, 400)c.drawImage('temp_diff.png', 50, 100, 600, 300)c.setFont('Helvetica-Bold', 20).drawString(250, 1050, '图纸对比报告')c.save()def main(construction_path, asbuilt_path, report_path):img1 = preprocess_image(construction_path)img2 = preprocess_image(asbuilt_path)matches = extract_and_match_features(img1, img2)diff = detect_differences(img1, img2, matches)generate_report(img1, img2, diff, report_path)if __name__ == "__main__":main("construction.png", "asbuilt.png", "comparison_report.pdf")

七、本地化打包EXE文件(Windows平台)

1. 安装PyInstaller

pip install pyinstaller

2. 执行打包命令

pyinstaller --onefile --windowed drawing_comparison.py
  • --onefile:生成单个EXE文件
  • --windowed:隐藏命令行窗口(可选)

3. 运行EXE

打包成功后,在dist目录找到drawing_comparison.exe,双击即可运行(无需安装Python环境)

八、使用说明与优化建议

1. 输入要求

  • 支持JPG/PNG格式,建议分辨率≥300dpi
  • 图纸背景需干净,避免多余标注干扰检测

2. 进阶优化

  1. 多尺度检测:增加图像金字塔处理,适应不同比例图纸
  2. 边缘检测增强:结合Canny算子预处理,提升复杂线条对比精度
  3. 文本差异识别:集成OCR技术(如Tesseract),检测文字修改区域
  4. GUI界面:使用PyQt5/Pygame开发图形化界面,提升交互体验

3. 常见问题

  • 匹配失败:增加good_matches数量(如前20个匹配点)
  • 差异模糊:调整cv2.threshold的阈值参数(当前30,范围0-255)
  • PDF乱码:添加中文字体支持(需修改reportlab配置)

九、总结

本文提供了从算法设计到工程落地的完整解决方案,实现了图纸对比的自动化与可视化。工具在简单场景下已能满足需求,复杂工程场景可通过增加机器学习模型(如YOLO目标检测)进一步提升精度。后续可扩展支持DWG/DXF等CAD原生格式,打造更专业的工程文档对比平台。

相关文章:

基于Python的施工图与竣工图对比小工具开发方案

基于Python的施工图与竣工图对比小工具开发方案 一、引言 在工程建设领域,施工图与竣工图的对比是项目验收的关键环节。传统人工对比方式效率低、易出错,本文基于Python开发一款自动化对比工具,支持快速检测图纸差异并生成可视化报告&#x…...

2025年世界职业院校技能大赛实施方案(意见稿)

为贯彻落实《教育强国建设规划纲要(2024—2035年)》,进一步提升世界职业院校技能大赛(以下简称“大赛”)内涵质量,发挥大赛引领作用,提升高技能人才培养质量,服务现代职业教育体系建…...

辛格迪客户案例 | 苏州富士莱医药GMP培训管理(TMS)项目

一、案例概述 富士莱医药股份有限公司位于美丽的江南水乡常熟,前身为常熟富士莱医药化工有限公司,从建厂初期面积仅有10余亩,逐步扩展到100余亩。近年来公司飞速发展,以黑马姿态发展成为中国专业生产硫辛酸系列产品、肌肽系列产品…...

安恒安全渗透面试题

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…...

【基于WSAAsyncSelec模型的通信程序设计】

文章目录 一、实验背景与目的二、实验设计与实现思路1. 设计思想2. 核心代码实现 总结 一、实验背景与目的 这次实验主要是为了让大家了解基于 WSAAsyncSelect 模型通信程序的编写、编译和执行过程。通过实践操作,深入掌握这种模型在实现计算机之间通信时的应用。 …...

Spring Boot+Mybatis设置sql日志打印

Spring BootMybatis设置sql日志打印 在全局配置文件添加以下内容:logging.level.com.demo.mapperdebug,com.demo.mapper:src下的mapper路径,debug:设置日志打印级别为debug,亦可设置为:ERROR、…...

Java 性能优化:从硬件到软件的全方位思考

Java 性能优化:从硬件到软件的全方位思考 在数字化飞速发展的当下,Java 作为广泛使用的编程语言,在各个应用领域发挥着关键作用。而 Java 性能优化作为提升系统运行效率、降低成本的核心环节,需要我们从硬件到软件进行全方位深入…...

ros2 humble moveit调试笔记

Overview — ROS2 Grasp Library Tutorials 0.5.0 documentation Robot Interface — ROS2 Grasp Library Tutorials 0.5.0 documentation 手动添加ompl_planning.yaml文件 planning_plugins:- ompl_interface/OMPLPlanner # To optionally use Ruckig for jerk-limited s…...

静态点亮数码管的某几段(STC89C52单片机)

#include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; void main() { ENLED 0; //使能U3&#xff0c;选择数码管DS1 ADDR3 1; ADDR2 0; ADDR1 0; ADDR0 0; P0 0xF9; /…...

搭建哨兵架构

Redis大纲 3.1.sentinel环境准备&#xff1a; a.3个sentinel实例信息&#xff1a; 1.sentinel实例信息如下&#xff0c;sentinel只是起到监控作用&#xff0c;不存放数据&#xff01;&#xff01;2.为了节省资源&#xff0c;在同一台虚拟机开启3个实例&#xff0c;必须准备三…...

阿里云入门手册

阿里云入门手册 一、付费方式二、云计算基础概念&#xff08;一&#xff09;云计算定义&#xff08;二&#xff09;云计算优势&#xff08;三&#xff09;云计算部署模式&#xff08;四&#xff09;专有网络 VPC 三、阿里云ECS实例&#xff08;一&#xff09;实例类型&#xff…...

AI日报 - 2024年04月22日

&#x1f31f; 今日概览(60秒速览) ▎&#x1f916; 模型进展 | Google发布Gemini 2.5 Flash&#xff0c;强调低延迟与成本效益&#xff1b;Kling AI 2.0展示多轴运动视频生成&#xff1b;研究揭示SLM在知识图谱上优于LLM&#xff0c;RLHF在推理提升上存局限。 ▎&#x1f4bc;…...

Windows BilibiliHistoryFetcher-v1.3.2-v1.2.1-开源B站历史记录管理工具[支持批量管理下载]

Windows BilibiliHistoryFetcher 链接&#xff1a;https://pan.xunlei.com/s/VOONAVJpANYPmzu1Zc3B0q1XA1?pwdnrjc# 使用说明&#xff1a; 以1.3.2与1.2.1版本为例 需要下载 BiliBili-History-Frontend 前端程序&#xff0c;在下载 BilibiliHistoryAnalyzer 解压运行&#…...

CH585单片机的LCD外设怎么驱动段式LCD

1、首先这里只讲应用&#xff0c;不讲具体原理。 要驱动段式LCD&#xff0c;这里就要知道占空比的调整&#xff0c;比如1/4为例就需要4个COM口。这4个COM口由单片机自行驱动&#xff0c;你不用管。就像硬件IIC和SPI&#xff0c;时序问题不用你去操心&#xff0c;你要做的就是向…...

包管理工具有哪些?主流软件分享

常见的包管理工具主要有&#xff1a;npm、Yarn、pnpm、Composer、Maven、pip、Conda 等&#xff0c;其中 npm 是目前全球使用最广泛的JavaScript包管理工具&#xff0c;以丰富的生态、便捷的使用体验以及强大的社区支持闻名。npm具备依赖管理、版本控制、脚本执行等强大功能&am…...

【网络安全】OWASP 十大漏洞

1. OWASP 十大漏洞 为了应对未来的风险&#xff0c;安全专业人员需要随时掌握最新信息。之前&#xff0c;您了解了CVE 列表&#xff0c;这是一个公开的已知漏洞和暴露列表。CVE 列表是全球安全社区相互共享信息的重要信息来源。 在本文中&#xff0c;您将了解安全专业人士参考…...

Fortran中FORALL的用法与性能分析

Fortran中FORALL的用法与性能分析 FORALL语句的基本用法 FORALL是Fortran 95引入的一种结构&#xff0c;用于表达并行数组操作。它的基本语法如下&#xff1a; FORALL (index start:end:stride, mask)array(index) expression END FORALL或者更复杂的多维度形式&#xff1…...

web组件和http协议

1.web组件 2.自定义元素 3.影子DOM 4.HTML模板 5.http协议 6.tcp ip协议...

论文笔记-arXiv2025-FilterLLM

论文笔记-arXiv2025-FilterLLM: Text-To-Distribution LLM for Billion-Scale Cold-Start Recommendation FilterLLM&#xff1a;面向十亿级冷启动推荐的文本到分布大语言模型摘要1.引言2.前言2.1符号说明2.2文本到判断2.2.1候选生成&#xff08;从数十亿到数百&#xff09;2.2…...

Anaconda Prompt 切换工作路径的方法

直接切换是不生效的&#xff1a; (base) C:\Users\96975>cd D:\weiban-tool-master\weiban-tool-master需要先回到根目录C盘&#xff0c;然后切换到目标文件夹盘符&#xff0c;进一步切换到目标文件夹 (base) C:\Users\96975>cd ..(base) C:\Users>cd ..(base) C:\&g…...

Synopsys:printvar命令和puts/echo命令的区别

相关阅读 Synopsyshttps://blog.csdn.net/weixin_45791458/category_12812219.html?spm1001.2014.3001.5482 Synopsys的EDA工具中存在一类变量&#xff0c;它们能控制工具的行为&#xff0c;被称为应用变量(application variable)&#xff0c;与之对应的是用户自定义变量(use…...

自注意力机制、多头自注意力机制、填充掩码 Python实现

原理讲解 【Transformer系列&#xff08;2&#xff09;】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解 自注意力机制 import torch import torch.nn as nn# 自注意力机制 class SelfAttention(nn.Module):def __init__(self, input…...

Cursor可视化大屏搭建__0420

主题:用Cursor怎么进行数据洞察,做AI预测化内容。 Python基础语法与AI python生态强大,代码简洁,相对其他语言Python更好上手,浙江高考将Python列为可选科目 科学计算:Sklearn,Numpy,Pandas 人工智能:Tensorflow,Pytorch 网络爬虫:Scrapy…...

postman乘法计算,变量赋值

postman脚本怎么计算乘法 在Postman中&#xff0c;你可以通过多种方式计算乘法&#xff0c;这取决于你的具体需求。例如&#xff0c;如果你想在发送请求前计算乘法结果&#xff0c;或者在测试标签中计算响应数据的乘法&#xff0c;下面是一些常见的方法。 1. 使用JavaScript代…...

计算机视觉——利用AI幻觉检测图像是否是生成式算生成的图像

概述 俄罗斯的新研究提出了一种非常规方法&#xff0c;用于检测不真实的AI生成图像——不是通过提高大型视觉-语言模型&#xff08;LVLMs&#xff09;的准确性&#xff0c;而是故意利用它们的幻觉倾向。 这种新方法使用LVLMs提取图像的多个“原子事实”&#xff0c;然后应用自…...

前端配置代理解决发送cookie问题

场景&#xff1a; 在开发任务管理系统时&#xff0c;我遇到了一个典型的身份认证问题&#xff1a;​​用户登录成功后&#xff0c;调获取当前用户信息接口却提示"用户未登录"​​。系统核心流程如下&#xff1a; ​​用户登录​​&#xff1a;调用 /login 接口&…...

word显示段落标记符(¶)而不是回车符

现象 公司的一位同事找到我说word显示异常&#xff0c;出现了段落标记符&#xff08;&#xff09;。 反馈的截图如下&#xff1a; 正常的截图如下&#xff1a; 原因 语言设置错误 解决 文件 选项 更改语言 关闭word并重启 恢复正常...

使用 Vue Router 和 Vite 构建的自动路由生成系统

这段代码是一个使用 Vue Router 和 Vite 构建的自动路由生成系统。它的主要作用是自动扫描 views 目录下的所有 Vue 组件文件,并为它们创建相应的路由配置,无需手动为每个页面定义路由。 主要功能和工作流程 项目说明 结构 . ├── App.vue ├── assets │ └── v…...

乐家桌面安卓版2025下载-乐家桌面软件纯净版安装分享码大全

是否在为智能电视或机顶盒上的应用资源不够丰富而烦恼&#xff1f;在使用安卓版乐家桌面或者纯净版乐家桌面的过程中还需要通过搜索框多页面查询&#xff0c;小编今天为大家来介绍一款好用的电视桌面——乐看家桌面&#xff0c;将为你打开一个全新的软件世界&#xff01; 乐看家…...

【sylar-webserver】重构日志系统

文章目录 主要工作流程图FiberConditionBufferBufferManagerLogEvent 序列化 & 反序列化LoggerRotatingFileLogAppender 主要工作 实现&#xff0c; LogEvent 序列化和反序列化 &#xff08;使用序列化是为了更标准&#xff0c;如果转成最终的日志格式再存储&#xff08;确…...

图形编辑器基于Paper.js教程27:对图像描摹的功能实现,以及参数调整

本篇文章来讲一下 图像描摹的功能的实现。 我们知道要雕刻图片可以通过分析图片的像素来生成相应的gcode进行雕刻&#xff0c;但如果你想要将图片转换为线稿进行雕刻&#xff0c;这个时候就要从图片中提取出 线稿。 例如下面的图片&#xff1a; 你想要获取到这个图片的线稿&…...

使用Mybaitis-plus提供的各种的免写SQL的Wrapper的使用方式

文章目录 内连接JoinWrappers.lambda和 new MPJLambdaWrapper 生成的MPJLambdaWrapper对象有啥区别&#xff1f;LambdaQueryWrapper 和 QueryWrapper的区别&#xff1f;LambdaQueryWrapper和MPJLambdaQueryWrapper的区别&#xff1f;在作单表更新时建议使用&#xff1a;LambdaU…...

SQL_连续登陆问题

文章目录 方案1&#xff1a;使用ROW_NUMBER函数1、针对对数据user_id分组&#xff0c;根据用户的活动日期排序2、用登录日期与rn求date_sub&#xff0c;得到的差值日期如果是相等的&#xff0c;则说明这两天肯定是连续的3、根据user_id和日期差sub_date分组&#xff0c;登录次数…...

【解决】Vue + Vite + TS 配置路径别名成功仍爆红

目录 前言 一.vite.config.ts 二.tsconfig.json 三. 别名配置成功&#xff0c;但语法提示爆红问题 四、可能遇到的问题 前言 ‌在项目中设置路径别名后仍然出现爆红问题&#xff0c;通常是由于配置不完整或配置错误导致的。Vite 中配置 alias 总共需要配置两个地方: vite…...

Discuz!与DeepSeek结合:打造智能论坛,提升用户体验与运营效率

引言 随着互联网技术的飞速发展&#xff0c;社区论坛作为用户交流、分享信息的重要平台&#xff0c;其用户体验和运营效率成为了影响平台竞争力的关键因素。Discuz!作为国内领先的社区论坛软件系统&#xff0c;以其强大的功能和广泛的用户基础&#xff0c;在社区论坛领域占据着…...

Federated Feature Augmentation and Alignment

TPAMI2025,说是解决特征偏移问题,但从实验看其他数据异构也一并改善了。文章和题目一样干了特征增强和特征对齐两件事。特征增强部分套了两次高斯拟合,搞得很复杂,没法一句话说清楚。特征对齐部分是截断成直方图,然后双向KL散度。 论文:目前好像只有ieee能搜到 代码:只…...

ThinkPHP5 的 SQL 注入漏洞

ThinkPHP5 的 SQL 注入漏洞&#xff08;常被安全社区称为 ThinkPHP5 SQL5 注入漏洞&#xff09;是 ThinkPHP5 框架中一系列因设计缺陷导致的安全问题&#xff0c;主要影响早期版本。 一、漏洞背景 ThinkPHP5 的 SQL 注入漏洞主要源于框架对用户输入数据的处理不当&#xff0c;尤…...

Linux学习笔记|入门指令

man 指令 用法&#xff1a;man [指令名称] &#xff0c;用于查看指定指令的帮助手册&#xff0c;获取指令的详细语法、选项及使用示例等信息 。示例&#xff1a;想了解 ls 指令的用法&#xff0c;执行 man ls &#xff0c;会进入 man 手册页面展示 ls 相关信息。按 q 键可退出。…...

前端实现数据导出成excel

前端(react/vue)实现数据导出成excel 1. 下载依赖 npm install js-export-excel -D 2. 新建exportExcel.js import ExportJsonExcel from js-export-excel; ​ /*** Event: 获取导出数据* description:* param config.tableParams<Object>: 表格接口请求参数* param …...

海事局发布《船舶智能监控系统技术指南(1.0)》,解读智驱力产品为何成为最佳选择!

为深入推进人工智能、边缘计算等新技术在水上交通安全领域应用&#xff0c;强化船舶安全风险实时感知、智能预警&#xff0c;推动水上交通安全治理模式向事前预防转型&#xff0c;中华人民共和国海事局于2025年3月11日正式制定了《船舶智能监控系统技术指南&#xff08;1.0&…...

uCOS3实时操作系统(系统初始化和任务启动)

文章目录 ucos初始化任务创建任务启动 ucos初始化 系统运行的过程如下&#xff1a;OSInit -> OSTaskCreate -> OSStartucos初始化主要在 OSInit 中进行&#xff0c;下面列举了该初始化过程中比较重要的几个步骤&#xff1a;OSInit()OSInitHook();OS_CPU_ExceptStkBase /…...

线上地图导航小程序源码介绍

基于ThinkPHP、FastAdmin和UniApp三大前沿技术推出的一款线上地图导航小程序源码&#xff0c;ThinkPHP作为后端框架&#xff0c;以其轻量、高效和灵活的特点&#xff0c;确保了小程序的稳定性和可扩展性。FastAdmin则是基于ThinkPHP构建的管理后台&#xff0c;操作简便、功能全…...

Mininet--nodelib.py源码解析

整体构架概述 1. What is it&#xff1f; 本代码是 Mininet 网络仿真框架的扩展模块&#xff0c;包含 LinuxBridge 和 NAT 两类节点。LinuxBridge 提供基于 Linux 网桥的交换机功能&#xff0c;支持生成树协议&#xff08;STP&#xff09;&#xff0c;用于构建冗余网络拓扑并防…...

[C++]多重继承:构造函数调用顺序解析

在C中&#xff0c;当派生类通过 多重继承 &#xff08;Multiple Inheritance&#xff09;继承多个基类&#xff08;如 A、B、C&#xff09;时&#xff0c;其构造函数调用顺序遵循以下规则&#xff1a; 1. 基类构造顺序 基类的构造函数调用顺序严格按照派生类定义中的基类声明…...

Math.round(),Math.ceil(),Math.floor(),Math.sqrt(),Math.pow(),Math.abs()等!

希望看到这篇的你今天开心 目录 Math.round():Math.ceil():Math.floor() :Math.sqrt():Math.pow():Math.abs():了解更多&#xff1a; Math.round(): 四舍五入取值 静态方法Math.round()返回四舍五入为最接近的整数的数字值。 对于正数&#xff0c;Math.round() 会将小数部分小…...

Docker 集成KingBase

Docker安装 再linux系统中安装yum命令&#xff0c;通过yum命令可直接安装docker yum命令如下 yum install dockerDocker安装KingBase 安装完成Dockr后&#xff0c;去KingBase官网中下载镜像 下载完成后&#xff0c;通过docker命令将镜像文件导入 docker load -i kdb_x86_64…...

论文速报《Being-0:结合视觉语言模型与模块化技能的人形机器人智能体》

论文链接&#xff1a;https://arxiv.org/pdf/2503.12533 项目主页&#xff1a;https://beingbeyond.github.io/being-0/?utm_sourcecatalyzex.com 0. 简介 人形机器人被认为是实现具身人工智能的理想载体&#xff0c;因其可以像人类一样与现实世界进行物理交互。构建能够在复…...

卷积神经网络--手写数字识别

本文我们通过搭建卷积神经网络模型&#xff0c;实现手写数字识别。 pytorch中提供了手写数字的数据集 &#xff0c;我们可以直接从pytorch中下载 MNIST中包含70000张手写数字图像&#xff1a;60000张用于训练&#xff0c;10000张用于测试 图像是灰度的&#xff0c;28x28像素 …...

JavaScript-原型、原型链详解

一、构造函数 在 JavaScript 中&#xff0c;构造函数是一种特殊的函数&#xff0c;用于创建和初始化对象&#xff0c;它就像一个 “对象模板”。通过 new 关键字调用构造函数时&#xff0c;会创建一个新对象&#xff0c;并将构造函数中的属性和方法 “绑定” 到这个新对象上。…...

深度学习框架PyTorch——从入门到精通(3.3)YouTube系列——自动求导基础

这部分是 PyTorch介绍——YouTube系列的内容&#xff0c;每一节都对应一个youtube视频。&#xff08;可能跟之前的有一定的重复&#xff09; 我们需要Autograd做什么&#xff1f;一个简单示例训练中的自动求导开启和关闭自动求导自动求导与原地操作 自动求导分析器高级主题&…...