论文笔记PhotoReg: Photometrically Registering 3D Gaussian Splatting Models
1.abstract
最近推出的3D高斯飞溅(3DGS),它用多达数百万个原始椭球体来描述场景,可以实时渲染。3DGS迅速声名鹊起。然而,一个关键的悬而未决的问题仍然存在:我们如何将多个3DG融合到一个连贯的模型中?解决这个问题将使机器人团队能够共同建立其周围环境的3DGS模型。这项工作的一个关键见解是利用照片级真实感重建和3D基础模型之间的二元性,前者从3D结构渲染真实的2D图像,后者从图像对预测3D结构。为此,我们开发了PhotoReg,这是一个将多个照片级真实感3DGS模型与3D基础模型配准的框架。由于3DGS模型通常由单目摄像机图像构建,因此具有任意比例尺。为了解决这一问题,PhotoReg通过考虑这些模型中的深度估计,积极地在不同的3DGS模型之间执行比例一致性。然后,使用细粒度的光度损失迭代地精化对齐,以产生高质量的融合3DGS模型。我们在标准基准数据集和我们自定义收集的数据集上严格评估PhotoReg,包括使用两个四足机器人。
2.INTRODUCTION
本文研究了将多个独立构建的3DGS模型组合成一个统一模型的问题。解决这个问题将允许机器人团队以分散的方式探索和绘制大型未知空间。为了应对3DGS融合的挑战,我们提出了我们的光度学三维高斯配准框架(PhotoReg)。经典的配准方法,如迭代最近点配准方法及其变种[5]、[6]、[7],主要集中在通过最小化相应点之间的距离来对齐点云[8]。然而,3DGS固有的连续和复杂的几何表示与传统配准方法管理的离散点集有很大的不同,这就需要像PhotoReg这样的创新方法来进行有效的配准。
PhotoReg利用在互联网规模的数据集上训练的3D基础模型,从2D图像对得出初始3D结构。这些模型提供粗略的估计,以促进3DGS模型的初始对齐,特别是在模型之间重叠最小的情况下。由于各个3DGS模型可能具有不同的比例,PhotoReg通过在每个模型中考虑置信度感知深度估计来积极调整它们的比例。随后,PhotoReg优化了细粒度光度损失,该损失衡量模型中渲染图像的质量,以确保3DG之间紧密对齐。我们对PhotoReg提供了广泛的经验评估,包括对经典基准数据集和定制收集的数据的评估。这包括由在公共区域运行的两个四足动物收集的自定义数据集。
本文的创新在于:
1)利用3D基础模型在重叠最小的情况下处理3DGS对齐;
2)通过计算具有置信度的深度估计来重新调整各个模型的比例,从而解决3DGS模型中的比例差异;
3)通过优化渲染图像的质量来精确调整融合模型。
3.RELATED WORK
3D配准:在机器人感知中,配准是指寻找两个3D结构之间的变换。 随着时间的推移,配准两个点云已被广泛研究。 ICP [22] 或者找到对应点对并基于最近点假设估计它们之间的刚体变换。 color ICP [23]、Point to Plane ICP [24] 和鲁棒 ICP [25] 等变体在准确性和效率方面提高了该方法。 目前已经探索了注册两个 NeRF 的方法。 NeRF2NeRF [26]提出通过手动选择关键点来对齐两个 NeRF。 DReg-NeRF [27] 通过使用深度学习自动对齐 NeRF 模型,进一步推进了 3D 配准。 已经尝试探索 3DGS 配准:LoopSplat [28] 通过配准 3D 高斯图引入了一种新颖的环路闭合技术。 然而,LoopSplat 依赖 RGB-D 图像来获取深度传感器读数,这限制了其在深度传感器不可用或不可靠时的适用性。 PhotoReg 可以在没有深度传感器的情况下注册 3DGS。
可视化基础模型:机器人技术受益于互联网规模数据训练的transformer[29]。特别是对于机器人感知,这种视觉基础模型包括[30]、[31]、[32]。这些型号充当即插即用模块,以促进一系列下游任务。例如,DINOv2[33]在互联网规模的未标记数据上接受了培训,采用了自监督技术,使其能够深入理解视觉内容,而不需要明确的注释。DUSt3R[34]是PhotoReg中使用的3D基础模型。它被设计成从RGB图像生成3D点图,从而实现姿势估计,并已被应用于下游机器人机械手感知[35],[36]。PhotoReg利用基础模型的应急能力来执行稳健的对齐。
4.METHODOLOGY
A.问题设置
这项工作中解决的主要挑战涉及3DGS模型的融合。具体地说,在给定输入3DGS模型G1和G2的情况下,我们提出的方法旨在找到在G1的坐标框架内将G2与G1内聚地对齐的变换函数T。由于3DG的规模是任意的,T需要处理可能具有非常不同的尺度的G1和G2。在深入研究我们提出的PhotoReg方法的细节之前,我们首先给出了3DGS模型的数学定义和相应的变换函数。
B.Notation and Transforming Gaussian Splats
3DGS模型G包括一组3D高斯,其中每个高斯由其3D位置µ来定义;协方差矩阵Σ,其描述了高斯分布在3D空间中的扩散和方向;不透明度,α;以及球谐(SH)系数c,其包含颜色信息:
Transformation:3DGS 模型的变换涉及对每个高斯的每个属性应用缩放、旋转和平移。 设 表示将 3DGS 模型从某个通用坐标系 A 映射到坐标系 B 的变换函数。该函数将坐标系 A 中的 3DGS 模型
作为输入,输出
(对应的坐标系)。 B变换后的3DGS模型,表示为
。
变换函数可以分别由缩放因子s、旋转R 和平移t 组成。 假设
且
。 每个属性的转换映射定义如下:
C. PhotoReg Overview
PhotoReg包括四个顺序阶段:基本图像匹配:选择每个输入3DGS模型中相邻区域的渲染图像对作为输入到3D基础模型;初始估计:获得3D基础模型对齐所用的旋转和平移的初始估计;尺度估计:通过置信度加权深度图解决3DGS模型之间的比例差异;优化:通过光度损失最小化同时优化比例、旋转和平移。该工作流程如图4所示。
D. Foundational Image Matching
我们详细介绍基础图像匹配 (FIM) 过程,该过程利用视觉基础模型(尤其是 DINOv2)来启动我们的注册过程。 FIM 过程的输入由两个 3DGS 模型组成,分别表示为 G1 和 G2,每个模型与一组相机pose C1 和 C2 相关联。 FIM 的主要目的是从 G1 和 G2 中识别和提取给定相机pose的两个高质量渲染图像,它们在语义级别上相似,并且不受观看pose的影响。 也就是说,同一物体但角度相同也好截然不同也好,只要语义类似,那么这两个图像将被识别为相似。 为了选择适当的图像作为 3D 基础模型的输入,我们首先以不同的姿势渲染来自 G1 和 G2 的图像集 I1 和 I2。 我们的目标是选择合适的图像对进行粗配准。 我们寻求 v1 ∈ V1 和 v2 ∈ V2 使得:
我们以这种方法识别图像对,其中一个从G1生成,另一个从G2生成,它们在语义和视觉上都是相似的。
E. Coarse Registration via 3D Foundation Models
我们继续使用图像对(img1,img2)作为 3D 基础模型 DUSt3R [34] 的输入,以获得初始粗配准,将 G2 近似对齐到 G1 的坐标系中。 我们将 img1 和 img2 输入到 DUSt3R 中,它估计具有旋转和平移的刚性变换。 然而,G1 和 G2 之间的缩放因子仍然未知。 下一步把从 3D 基础模型获得的变换应用回原始 3DGS 模型。 该过程涉及一系列转换步骤,如图5所示。 我们定义坐标系如下: 对于坐标系 P,
表示坐标系 P 下的 3DGS 模型 Gi。具体来说,Poi 是 3DGS模型
的原始坐标系,而
是像机的坐标系,以产生图像img i。溅射模型的原始坐标系是任意构造的,
表示模型原始坐标系o1到相机坐标系c1的变换。
我们的目标是获得到,该变换函数直接将G2坐标系变换到G1的坐标系中,公式是:
我们遵循图5中的变换序列。这里,和
是世界到相机的变换w2c,对应于已知的图像img1和img2。两个摄像机位姿之间的变换被表示为
,它包括旋转、平移和缩放
。我们主要关注
与DUSt3R的输出
的匹配关系。然而,尺度
是未知的。因此我们有,可以对着坐标系看公式,公式4是公式3的具体化:
上面公式中,从右往左看,是G2原始坐标系(world)变换到了他的一个相机坐标系c2,然后又从c2变换到了G1的一个相机坐标系c1,最后从c1变换到了G1的世界坐标系。
唯一未知的参数是尺度比。由于两个世界到相机的变换都具有已知的绝对比例,因此
是两个3DGS模型之间的比例差异。也就是说,
。在接下来的小节中,我们将估计最终的未知参数
,即G1和G2之间的尺度比。
F. Scale Estimation
在这一步中,我们通过比较不同坐标系中同一个pose下的深度图来估计尺度比。深度图可以表示为二维矩阵,其中每个元素表示视点(例如,照相机)沿视线到场景中一点的距离,
给定一个相机pose,深度图可以从标准的3DGS模型[39]中提取,并且也可以在初始粗对准期间由DUSt3R输出。还输出深度图的像素方向置信度图。这里,我们将从它们各自的3DGS模型获得的深度图IMG1和IMG2表示为D1,D2∈RW×H,并且将来自DUST3R的深度图表示为∈RW×H,以及置信度图C1,C2∈RW×H。这里,W和H表示图像宽度和高度。
一个关键的细节是,因为DUSt3R的性质(DUSt3R输出的pointmap、confidence map都是统在同一个坐标系下面的),深度位于相同的坐标系中,具有相同的尺度。然后,我们可以估计G1和G2之间的置信度权重:
其中,⊗表示矩阵中各个对应元素之间的乘积。通过对尺度比的估计,我们得到一个初始变换
(这个尺度比其实就是坐标系尺度比),它大致对齐了G1和G2。我们现在将重点转移到优化训练这个初始变换的路线上。
G. Precise Refinement via Photometric Optimization
在粗略地对齐G1和G2之后,我们通过从G1和G2以一种新的姿势C来渲染图像来进一步优化对齐。然后,我们最小化渲染图像之间的光度损失,并根据我们的变换参数进行优化。我们注意到,3DGS模型和渲染的可微性使得基于梯度的优化能够传播回变换参数。使用的损失是 L1 距离,用mask标记相同pose下,同像素位置来自G1和G2的渲染:
其中 F 是可微渲染函数,可在给定摄像机姿势和 3DGS 模型的情况下生成图像。掩码的 L1 距离 l1masked 给出了由元素级二进制mask的 L1 距离。使用的元素级二进制掩码是 M1⊗M2,其中 M1 和 M2 是二进制掩码,指示是否在每个像素处渲染了任何内容。
我们根据的参数对 L 进行微分,给出为
。 我们使用基于梯度的优化器来最小化损失并执行详细的对齐。
5. EXPERIMENTS
(coming soon)
在本节中,我们评估所提出的 PhotoReg 方法在合并两个或多个具有不同重叠级别的高斯 Splatting 模型时的性能。 我们在框架中使用的基础模型是 DUSt3R 和 DINOv2。 DUSt3R 从渲染图像中生成粗略的 3D 重建; DINOv2 基于图像中稳健的视觉特征执行特征提取。 我们寻求凭经验回答几个主要问题
相关文章:
论文笔记PhotoReg: Photometrically Registering 3D Gaussian Splatting Models
1.abstract 最近推出的3D高斯飞溅(3DGS),它用多达数百万个原始椭球体来描述场景,可以实时渲染。3DGS迅速声名鹊起。然而,一个关键的悬而未决的问题仍然存在:我们如何将多个3DG融合到一个连贯的模型中?解决这个问题将使…...
宝塔服务器安装备份配置
1.服务器下载安装宝塔功能 if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec执行后选择y 等待下载完成会给出…...
ubuntu22 安装CUDA
在Ubuntu系统中,使用nvidia-smi命令可以看到当前GPU信息,在右上角可以看到CUDA Version,意思是最大支持的CUDA版本号。 安装下载 CUDA Toolkit 11.6 Downloads | NVIDIA Developer https://developer.nvidia.com/cuda-downloads?target_osL…...
LabVIEW故障诊断中的无故障数据怎么办
在使用LabVIEW进行故障诊断时,可能会面临“无故障数据”的情况。这种情况下,缺乏明确的故障参考,使得系统难以通过传统对比法进行故障识别。本文将介绍应对无故障数据的关键策略,包括数据模拟、特征提取和基于机器学习的方法&…...
开发模式选择与最佳实践指南20241230
开发模式选择与最佳实践指南 引言 在现代软件开发中,选择合适的开发模式直接影响项目的开发效率和质量。本文将帮助您: 🎯 了解三种主流开发模式的优缺点💡 根据项目特点选择最适合的开发模式🔧 掌握混合开发模式的…...
超详细!一文搞定PID!嵌入式STM32-PID位置环和速度环
本文目录 一、知识点1. PID是什么?2. 积分限幅--用于限制无限累加的积分项3. 输出值限幅--用于任何pid的输出4. PID工程 二、各类PID1. 位置式PID(用于位置环)(1)公式(2)代码使用代码 2. 增量式…...
Redhat7 PCS建立无共享存储浮动地址集群
更新记录 日期版本号内容9/22/2024Ver 1.0重新排版修正 0写在前面 0.1 简述 时间有限使用VMware6.7环境使用Centos7.8最小化安装方式(不用配置本地yum仓库)注意查看主机名(主机双机操作,部分单机操作) 序号HostIPAd…...
爱思唯尔word模板
爱思唯尔word模板 有时候并不一定非得latex https://download.csdn.net/download/qq_38998213/90199214 参考文献书签链接...
交换机Vlan中 tagged和untagged的区别
pvid,tagged与untagged pvid是交换机一个端口上的id,一个端口只能有一个pvid,多个端口可以有相同的pvid。 一:接收数据 Untagged:不管收到的数据帧是否已经有VLAN标记,将数据帧中的vlan标记修改为自己的pvi…...
软件需求分析期末知识点整理
前言:本文为wk学子量身打造,帮助大家少挂科。主要根据ls的会议进行整理。懂得都懂。 重点还是多看看课本 第2章 需求获取的方法 第3章 3.1.2 控制需求(案例*2) 第4章 4.3 范式 第5章 5.2.3 原子功能(案例) 5.2.4 划分功能(案例)5.3.3 工作流图(画图) 第…...
PyAudio使用手册
PyAudio 是一个功能强大的 Python 库,用于在 Python 中进行音频输入和输出操作 1. 安装 在使用 PyAudio 之前,需要先安装它。可以使用 pip 进行安装: pip install pyaudio在某些系统(如 Ubuntu)上,可能还需…...
总结TCP/IP四层模型
总结TCP/IP四层模型 阅读目录(Content) 一、TCP/IP参考模型概述 1.1、TCP/IP参考模型的层次结构二、TCP/IP四层功能概述 2.1、主机到网络层 2.2、网络互连层 2.3、传输层 2.3、应用层 三、TCP/IP报文格式 3.1、IP报文格式3.2、TCP数据段格式3.3、UDP数据段格式3.4、套…...
《深入挖掘Python加解密:自定义加密算法的设计与实现》
利用python实现加解密 在正式编写各种加解密前,我们先写个小案例,如下。 封面在文末呦! 基础加解密-源码 # 加密 def encode():source01 乐茵for c in source01:ascii01 ord(c)ascii01 1print(chr(ascii01), end)# 解密 def decode():…...
【前端,TypeScript】TypeScript速成(六):函数
函数 函数的定义 定义一个最简单的加法函数: function add(a: number, b: number): number {return a b }(可以看到 JavaScript/TypeScript 的语法与 Golang 也非常的相似) 调用该函数: console.log(add(2, 3)) // out [LOG…...
Python中元组(tuple)内置的数据类型
在Python中,元组(tuple)是一种内置的数据类型,用于存储不可变的有序元素集合。元组在很多方面与列表(list)相似,但它们之间存在一些关键的区别。以下是关于Python元组的详细解释: 定…...
AI安全的挑战:如何让人工智能变得更加可信
引言 随着人工智能(AI)技术在各个领域的广泛应用,尤其是在医疗、金融、自动驾驶和智能制造等行业,AI正在重塑我们的工作和生活方式。从提高生产效率到实现个性化服务,AI带来了前所未有的便利。然而,在享受这…...
redis用途都有哪些
Redis,作为一个开源的高性能键值对数据库,其用途广泛且功能强大。 1. 缓存(Caching): • Redis常被用作缓存层,存储那些频繁访问但不易改变的数据,如用户会话、商品详情等。 • 通过将这些数据存…...
【Django篇】--动手实现路由模块化与路由反转
一、路由模块化 在一个Django项目中,由于功能类别不同,因此需要将不同功能进行模块化设计。在Django项目中模块化设计则需要将不同模块封装为对应的app模块,每一个模块中涉及到的路由则也需要进行模块化设计,才能更好的让整个项目…...
自研国产零依赖前端UI框架实战008 用户表单以及随机ID
前言 通过前面的努力,我们的组件已经越来越多了,我们的功能也越来越完善. 不过我们的新增用户的功能还没有做. 接下来, 就让我们实现新增用户的功能. 显示新增用户的表单 首先, 我们先把新增用户的表单显示出来. 我们可以复用之前的组件. <zdp_button1 text"新增…...
【数据结构-单调队列】力扣LCR 184. 设计自助结算系统
请设计一个自助结账系统,该系统需要通过一个队列来模拟顾客通过购物车的结算过程,需要实现的功能有: get_max():获取结算商品中的最高价格,如果队列为空,则返回 -1 add(value):将价格为 value …...
项目管理和协作平台Maintainer、Guest、Reporter、Owner 和 Developer 是常见的用户角色
在项目管理和协作平台上,Maintainer、Guest、Reporter、Owner 和 Developer 是常见的用户角色,每个角色有不同的权限和责任。以下是这些角色的详细区别: 1. Guest(访客) 权限:最低级别的权限。访问&#…...
探索电商数据:爬取不同平台商品信息的Python实践
在数字化时代,电商平台的商品信息成为了宝贵的数据资源。除了亚马逊,全球还有许多电商平台的商品信息值得爬取。本文将介绍几个值得关注的电商平台,并提供Python代码示例,展示如何爬取这些平台的商品信息。 1. 京东 (JD.com) 京…...
Autoware Universe 安装记录
前提: ubuntu20.04,英伟达显卡。 演示:https://www.bilibili.com/video/BV1z4CbYFEwr/?spm_id_from333.337.search-card.all.click ROS2-Galactic安装 wget http://fishros.com/install -O fishros && . fishros 选择galactic(R…...
CAT3D: Create Anything in 3D with Multi-View Diffusion Models 论文解读
24年5月的论文,上一版就是ReconFusion 目录 一、概述 二、相关工作 1、2D先验 2、相机条件下的2D先验 3、多视角先验 4、视频先验 5、前馈方法 三、Method 1、多视角扩散模型 2、新视角生成 3、3D重建 一、概述 该论文提出一种CAT3D方法,实现…...
群落生态学研究进展▌Hmsc包对于群落生态学假说的解读、Hmsc包开展单物种和多物种分析的技术细节及Hmsc包的实际应用
HMSC(Hierarchical Species Distribution Models)是一种用于预测物种分布的统计模型。它在群落生态学中的应用广泛,可以帮助科学家研究物种在不同环境条件下的分布规律,以及预测物种在未来环境变化下的潜在分布范围。 举例来说&a…...
C 进阶 — 程序环境和预处理
C 进阶 — 程序环境和预处理 主要内容 程序的编译和执行环境 C 程序编译和链接 预定义符号 预处理指令 #define 预处理指令 #include 预处理指令 #undef 预处理操作符 # 和 ## 宏和函数对比 命令行定义 条件编译 一 程序的编译和执行环境 ANSI C 存在两个不同环境…...
基于单片机的温湿度采集系统(论文+源码)
2.1系统的功能 本系统的研制主要包括以下几项功能: (1)温度检测功能:对所处环境的温度进行检测; (2)湿度检测功能:对所处环境的湿度进行检测; (3)加热和制冷功能:可以完成加热和制冷功能。 (4)加湿和除…...
【数据分析处理之缺失值】
文章目录 一、缺失值的影响1. 统计分析的偏差2. 机器学习模型的性能下降3. 数据质量和可信度下降4. 数据利用率降低5. 增加数据预处理的复杂度 二、识别缺失值1. 使用工具识别缺失值2. 可视化缺失数据 三、处理缺失值的策略1. 删除含缺失值的行或列2. 填充缺失值a. 用常数填充b…...
【大模型实战篇】Mac本地部署RAGFlow的踩坑史
1. 题外话 最近一篇文章还是在11月30日写的,好长时间没有打卡了。最近工作上的事情特别多,主要聚焦在大模型的预训练、微调和RAG两个方面。主要用到的框架是Megatron-DeepSpeed,后续会带来一些分享。今天的文章主要聚焦在RAG。 近期调研了一系…...
SQL Server实现将分组的其他字段数据拼接成一条数据
在 SQL Server 中,可以使用 STRING_AGG 函数(SQL Server 2017 及更高版本支持)将分组的其他字段数据拼接成一条数据。以下是示例代码: 假设有一个表 Orders,结构如下: OrderIDCustomerIDProduct1C001Appl…...
STM32 高级 物联网通讯之蓝牙通讯
目录 蓝牙基础知识 蓝牙概述 蓝牙产生背景 蓝牙发展历程 蓝牙技术类型 经典蓝牙(BR/EDR和AMP) 低功耗蓝牙(BLE) 市场上常见蓝牙架构 SOC蓝牙单芯片方案 SOC蓝牙+MCU方案 蓝牙host+controller分开方案 蓝牙协议栈 蓝牙芯片架构 BLE低功耗蓝牙协议栈框架 物理…...
堆排序基础与实践:如何在Java中实现堆排序
目录 一、堆排序的基本原理 二、堆排序的实现步骤 三、堆排序的时间复杂度和空间复杂度 四、堆排序的工作流程 五、堆排序的优缺点 六、堆排序的应用场景 堆排序(Heap Sort)是一种基于堆数据结构的排序算法。堆是一种特殊的完全二叉树,…...
你有哪些Deep Learning(RNN、CNN)调参的经验?
在深度学习的实践中,调参是一项既艺术又科学的工作。它不仅需要理论知识的支撑,还需要大量的实践经验。以下是一些在RNN和CNN模型调参中积累的经验,希望对正在这个领域摸索的朋友们有所帮助。 1. 从成熟的开源项目开始 对于初学者来说&…...
小程序租赁系统开发的优势与应用探索
内容概要 在如今这个数码科技飞速发展的时代,小程序租赁系统开发仿佛是一张神奇的魔法卡,能让租赁体验变得顺畅如丝。想象一下,无论你需要租用什么,从单车到房屋,甚至是派对用品,只需动动手指,…...
Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化
如何使用 Maven 将 Spring Boot 应用程序 Docker 化? Docker是一个开源容器化工具,用于在隔离环境中构建、运行和管理应用程序。它方便开发人员捆绑其软件、库和配置文件。Docker 有助于将一个容器与另一个容器隔离。在本文中,为了将Spring B…...
Day58 图论part08
拓扑排序精讲 拓扑排序看上去很复杂,其实了解其原理之后,代码不难 代码随想录 import java.util.*;public class Main{public static void main (String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();List<List<Integer&…...
u3d中JSON数据处理
一.认识JSON 1.1 Json概述 JSON(JavaScript Object Notation,JavaScript对象表示法)JSON和XML是比较类似的技术,都是用来存储文本信息数据的;相对而言,JSON比XML体积更小巧,但是易读性不如XML…...
大语言模型(LLM)一般训练过程
大语言模型(LLM)一般训练过程 数据收集与预处理 收集:从多种来源收集海量文本数据,如互联网的新闻文章、博客、论坛,以及书籍、学术论文、社交媒体等,以涵盖丰富的语言表达和知识领域。例如,训练一个通用型的LLM时,可能会收集数十亿甚至上百亿字的文本数据.清洗:去除…...
第十六届蓝桥杯模拟赛(第一期)(C语言)
判断质因数 如果一个数p是个质数,同时又是整数a的约数,则p称为a的一个质因数。 请问2024有多少个质因数。 了解 约数,又称因数。整数a整除整数b,b为a的因数(约数)质数,又称素数。只有1和它本身两…...
某网站手势验证码识别深入浅出(全流程)
注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 本文识别已同步上线至OCR识别网站: http://yxlocr.nat300.top/ocr/other/20 本篇文章包含经验和教训总结,我采用了两种方法进行识别,两种方法都各有优劣,其中一…...
QT---------QT框架功能概述
常用Qt界面组件 Qt提供了丰富的界面组件,如QPushButton(按钮)、QLineEdit(单行文本框)、QTextEdit(多行文本框)、QLabel(标签)、QComboBox(下拉框࿰…...
C++ 设计模式:模板方法(Template Method)
链接:C 设计模式 链接:C 设计模式 - 策略模式 链接:C 设计模式 - 观察者模式 模板方法(Template Method)是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。通过这…...
下载mysql免安装版和配置
1、下载地址 点击去官网下载https://downloads.mysql.com/archives/community/ 2、解压安装mysql 解压的文件夹是没有my.ini文件和data目录,需要我们自己去创建 根目录下创建my.ini,根目录创建data [mysql] default-character-setutf8[mysqld] #端口 po…...
Web服务端技术原理及应用
前言 黄色的是考点,蓝色的是重点。 HTML/CSS/JS 本章会有一个7分的程序设计题,用到前端知识 form表单元素,常用表单元素 html:HTML快速上手 基础语法、css常用选择器(ID、类)、盒子模型 css:网页美化指南 JS …...
数据库的使用09:使用SSMS工具将SQLsever数据导出到Excel
第一步,新建一个空白的.csv文件 第二步,按步骤点击导出 第三步,选择数据源(Db数据库) 第四步,选择目标源(CSV平面文件目标) 第五步,指定表或SQL 一直点下一步即可&am…...
Python中__getitem__ 魔法方法
在Python中,__getitem__ 是一个特殊的方法,通常称为“魔法方法”或“双下方法”(因为它们的名字前后都有两个下划线)。__getitem__ 方法允许一个对象实现像序列(如列表、元组、字符串)一样的行为࿰…...
自动驾驶三维重建
大概八成估计是未来的科研方向了 Neural Radiance Field in Autonomous Driving: A Survey...
小程序中引入echarts(保姆级教程)
hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…...
INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL JOIN这四个怎么在gorm中使用
在 GORM 中,JOIN 操作是通过 Joins 方法实现的,而不同类型的 JOIN(如 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN)可以通过特定的 SQL 语法来表示。GORM 本身并没有直接的 INNER, LEFT, RIGHT 等专用方法,但可以…...
分布式版本管理工具——Git关联远程仓库(github+gitee)
Git远程仓库(Github)的基本使用 一、前言二、Git远程仓库介绍三、演示1. 关联github远程仓库2. 关联gitee(码云)远程仓库3. 重命名远程仓库名4. 移除远程仓库 四、结束语 一、前言 古之立大事者,不惟有超世之才&#x…...