计算机视觉---相机标定
相机标定在机器人系统中的作用
1.确定相机的内部参数
- 相机的内部参数包括焦距、主点坐标、像素尺寸等。这些参数决定了相机成像的几何关系。通过标定,可以精确获取这些参数,从而将图像中的像素坐标与实际的物理坐标建立联系。例如,已知相机的焦距和主点坐标,就可以根据成像原理计算出物体在图像中的位置与实际位置之间的关系,这对于机器人准确理解视觉信息至关重要。
Opencv库中的solvepnp函数,传入相机内参,畸变参数,实际物体大小,图像物体大小,即可得出物体的x,y,z坐标和旋转矩阵
2.纠正图像畸变
- 实际的相机镜头会引入各种畸变,如径向畸变和切向畸变。径向畸变会使图像中的直线变得弯曲,切向畸变则会导致图像在不同方向上的缩放比例不一致。这些畸变会严重影响机器人对环境的感知和理解。通过相机标定,可以建立畸变模型,并对图像进行校正,使机器人看到的图像更接近真实场景,从而提高视觉检测和识别的准确性。
3.实现机器人坐标系与相机坐标系的转换
- 机器人需要将相机获取的图像信息与自身的运动和操作联系起来,这就需要知道相机坐标系与机器人坐标系之间的相对位置和姿态关系。相机标定可以精确测量这两个坐标系之间的转换关系,使机器人能够将图像中的目标位置转换到自身坐标系下,从而准确地进行目标定位、路径规划和抓取等操作。
Robomaster比赛机器人中,我们的相机坐标系与发生机构存在一定的空间偏差,我们需要用ROS2的urdf(xacro)表述这两个组件之间的空间关系,控制枪口对准目标而不是相机!
4.提高机器人视觉系统的精度和可靠性
- 精确的相机标定可以减少视觉测量中的误差,提高机器人对物体位置、形状和姿态的测量精度。这对于需要高精度操作的机器人任务,如装配、焊接等非常重要。同时,准确的标定也可以提高视觉系统的可靠性,使机器人在不同的光照条件、环境背景下都能稳定地工作,减少因标定不准确而导致的错误决策和操作失误。
每次调整焦距后,建议重新标定;根据环境光调整曝光,太暗容易识别不到,太亮噪声太多。
5.多相机系统的协同工作
- 在一些复杂的机器人应用中,可能会使用多个相机来获取更全面的环境信息。对于多相机系统,相机标定不仅要确定每个相机的内部参数和外部参数,还要精确校准各个相机之间的相对位置和姿态关系,以实现多相机图像的融合和协同工作。这样可以扩大机器人的视觉感知范围,提高对复杂场景的理解能力。
例如,双头哨兵,配备有两个摄像头,分别检测一定的视觉范围,检测效率远高于常规哨兵,可以更加快速的发现目标并追踪打击。
相机标定
(详细内容推荐Opencv4快速入门这本书中的单目视觉和双目视觉部分,在此只是简单的介绍重要内容)
一、核心概念与坐标系定义
1. 定义
相机标定是通过数学建模,确定相机成像系统从三维世界到二维图像的几何映射关系,并校正镜头畸变的过程。其本质是求解两类参数:
- 内参数(Intrinsic):相机固有属性,与外部环境无关,包括焦距( f x f_x fx, f y f_y fy)、主点坐标( c x c_x cx, c y c_y cy)、畸变系数(径向 k 1 k_1 k1, k 2 k_2 k2, k 3 k_3 k3),切向 ( p 1 p_1 p1, p 2 p_2 p2)。
2. 四大核心坐标系
- 像素坐标系( u u u- v v v):原点位于图像左上角,单位为像素,通过缩放和平移与图像坐标系关联。
- 图像坐标系( o o o- x y xy xy):原点为光轴与成像平面的交点(理想主点),单位为物理长度(如毫米),遵循小孔成像模型。
- 相机坐标系( O c O_c Oc- X c X_c Xc Y c Y_c Yc Z c Z_c Zc):原点位于相机光心,( Z c Z_c Zc) 轴沿光轴方向,( X c X_c Xc, Y c Y_c Yc) 轴与成像平面平行。
- 世界坐标系( O w O_w Ow- X w X_w Xw Y w Y_w Yw Z w Z_w Zw):用户定义的全局坐标系,用于描述物体的三维位置(如标定板平面设为 ( Z w Z_w Zw=0)。
二、数学模型:从3D到2D的映射
1. 理想成像:针孔相机模型
从世界坐标到像素坐标的转换分三步:
2. 畸变模型:校正光学缺陷
实际镜头存在两类畸变:
-
径向畸变(中心对称):
- 桶形畸变(广角镜头):边缘像素向中心收缩,( k 1 k_1 k1 < 0);
- 枕形畸变(长焦镜头):边缘像素向外扩张,( k 1 k_1 k1 > 0)。
校正公式(以归一化坐标 ( x x x, y y y) = ( X c X_c Xc/ Z c Z_c Zc, Y c Y_c Yc/ Z c Z_c Zc) 为例):
-
切向畸变(非对称):
由镜头安装误差导致,像素点沿切线方向偏移:
校正顺序:先对归一化坐标去畸变,再转换为像素坐标。
三、标定方法分类与实现
1. 按标定物分类
-
传统3D标定法:
- 使用高精度三维标定物(如立方体),已知所有角点的3D坐标。
- 优点:精度极高(亚毫米级),适用于工业测量;缺点:设备昂贵,操作复杂。
-
张正友标定法(2D标定板):
- 使用平面棋盘格(世界坐标设为 ( Z w Z_w Zw=0),通过至少6张不同视角图像求解参数。
- 步骤:
-
角点检测:用OpenCV的
findChessboardCorners()
获取像素坐标 ( u i u_i ui, v i v_i vi); -
线性求解初值:通过最小二乘解超定方程组,得到 ( K K K, R R R, t t t) 的初始估计;
-
非线性优化:以重投影误差(如下式)为目标,用LM算法优化所有参数(包括畸变系数);
-
精度评估:计算平均重投影误差(理想<1像素)。
-
- 优点:简单易用,无需3D设备;缺点:精度依赖标定板精度和图像质量。
- 自标定法:
- 无需标定板,利用相机运动(如不同视角的图像序列)和场景结构信息求解参数。
- 适用于动态场景(如SLAM初始化),但精度较低,需结合Bundle Adjustment优化。
2. 按相机数量分类
-
单目标定:求解单个相机的内外参数。
-
双目/多相机标定:
- 除单目参数外,还需求解相机间的相对外参数(如双目相机的基线距离 ( B B B) 和旋转矩阵 ( R l e f t − r i g h t R_{left-right} Rleft−right),用于立体匹配和深度计算。
- 联合标定方法:同时拍摄标定板,确保所有相机视野覆盖标定板,利用全局优化求解所有相机参数。
-
传感器联合标定(如相机-IMU):
- 目标:求解相机与IMU的外参数(旋转 ( R c a m − i m u R_{cam-imu} Rcam−imu)、平移 ( t c a m − i m u t_{cam-imu} tcam−imu),以及时间同步参数。
- 方法:使用Kalibr工具,通过手持标定板运动,利用IMU的惯性测量和相机的视觉观测联合优化参数,适用于SLAM系统。
四、标定板设计与数据采集
1. 标定板类型
- 棋盘格(最常用):
- 优点:角点检测算法成熟(如Harris角点),适合快速标定;
- 缺点:存在对称性,需设置不对称角点(如缺角)辅助定位。
- 圆形阵列:
- 圆心检测精度高(亚像素级),适合高精度场景(如工业视觉);
- 缺点:检测算法较复杂。
- 其他:不对称图案、三维结构光标定板(用于大视角相机)。
2. 数据采集要点
- 视角多样性:拍摄至少10张图像,覆盖不同距离(0.5~3倍焦距)、角度(倾斜±30°)、旋转(绕各轴转动),避免正对或单一视角。
- 图像质量:
- 光照均匀,避免过曝/欠曝(影响角点检测);
- 标定板占图像比例适中(1/4~3/4),边缘清晰无运动模糊。
- 标定板精度:格子尺寸需精确测量(误差<0.1mm),建议使用工业级标定板。
五、优化算法与误差分析
1. 线性最小二乘(初值求解)
将投影模型线性化,忽略畸变,建立关于内/外参数的超定方程:
通过奇异值分解(SVD)求解最小二乘解,作为非线性优化的初值。
2. 非线性优化(Bundle Adjustment)
-
目标函数:重投影误差平方和
-
优化算法:Levenberg-Marquardt(LM)算法,结合高斯牛顿法和梯度下降法,处理非线性最小二乘问题。
3. 误差来源
- 系统误差:标定板加工精度、相机热漂移(长时间使用焦距变化)。
- 检测误差:角点定位精度(亚像素级检测可提升至0.1像素以下)。
- 模型误差:忽略高阶畸变(如k3)或使用简化模型(如假设 ( f x f_x fx = f y f_y fy)。
六、特殊相机标定
1. 鱼眼相机/广角镜头
-
畸变模型:传统针孔模型失效,改用球面投影或等距投影模型,如:
-
标定方法:使用圆形标定板或专用鱼眼标定算法(如OpenCV的
fisheye
模块),畸变系数通常包含4项( k 1 , k 2 , k 3 , k 4 k1, k2, k3, k4 k1,k2,k3,k4)。
2. 多镜头相机(如全景相机)
- 需对每个镜头单独标定,再通过坐标变换拼接全景图像,关键是精确求解各镜头间的相对外参数。
七、工具与库
工具 | 特点 | 适用场景 |
---|---|---|
OpenCV | 支持张正友标定、鱼眼标定,提供calibrateCamera() 、fisheye::calibrate() 等函数,代码开源。 | 通用视觉、快速原型开发 |
MATLAB Toolbox | 图形化界面,自动检测角点,支持误差可视化,适合教学与初步标定。 | 非编程用户、精度验证 |
Kalibr (ROS) | 支持多相机、相机-IMU联合标定,输出ROS可用的参数文件,兼容机器人系统。 | 机器人导航、SLAM系统集成 |
Camera Calibration Toolbox (Bouguet) | 经典Matlab工具,支持自定义标定板,提供径向/切向畸变校正,精度高。 | 科研、工业视觉预处理 |
八、应用场景与精度要求
领域 | 典型应用 | 精度要求 |
---|---|---|
工业视觉 | 零件尺寸测量、缺陷检测 | 亚像素级(<0.5像素),重投影误差<0.3像素 |
自动驾驶 | 目标距离测量、车道线检测 | 1~2像素,需实时标定更新 |
三维重建 | SfM、SLAM地图构建 | 0.5~1像素,依赖场景复杂度 |
AR/VR | 虚拟物体定位与渲染 | 1~3像素,兼顾实时性与精度 |
医学影像 | 手术导航、病灶三维建模 | 亚毫米级,需高精度3D标定物 |
九、注意事项与最佳实践
- 标定板选择:根据相机类型(普通/鱼眼)和精度需求选择棋盘格或圆形板,尺寸覆盖相机视野的1/3~2/3。
- 数据预处理:对图像进行灰度化、去噪(如高斯滤波),提高角点检测成功率。
- 初值敏感性:非线性优化依赖初值,若线性解误差大,可手动调整主点坐标(设为图像中心)或焦距(根据图像分辨率估算)。
- 长期稳定性:定期重新标定(如相机更换、环境温度变化),避免参数漂移影响系统精度。
十、扩展:从标定到视觉系统构建
相机标定是视觉测量的起点,后续应用需结合标定结果:
- 立体视觉:利用双目相机的内参数和相对外参数,通过极线约束计算视差,恢复场景深度。
- SLAM:单目SLAM需通过三角化估计尺度,而相机-IMU联合标定可提供初始尺度和重力方向,提升定位精度。
- 增强现实:根据实时外参数 ( R , t ) (R, t) (R,t),将虚拟物体坐标转换为相机坐标系下的坐标,再通过内参数投影到屏幕像素。
总结
**相机标定是连接三维世界与二维图像的桥梁,其核心是通过数学建模和优化求解内外参数,消除畸变影响。**从基础的张正友标定到复杂的多传感器联合标定,标定方法的选择依赖于应用场景的精度、实时性和设备条件。掌握坐标系转换、畸变模型、优化算法等核心知识点,是实现高精度视觉测量、三维重建和机器人导航的关键。通过合理设计标定流程、选择工具并严格控制误差,可确保后续视觉算法的可靠性和鲁棒性。
相关文章:
计算机视觉---相机标定
相机标定在机器人系统中的作用 1.确定相机的内部参数 相机的内部参数包括焦距、主点坐标、像素尺寸等。这些参数决定了相机成像的几何关系。通过标定,可以精确获取这些参数,从而将图像中的像素坐标与实际的物理坐标建立联系。例如,已知相机…...
微信小程序的全局变量(quanjubianliang)
在微信小程序开发中,管理和使用全局变量是一种常见的需求。例如,可以通过小程序的App实例和globalData对象来实现全局变量的存储和共享。以下是详细说明: 1. 全局变量的定义 微信小程序提供了 App() 函数,其中可以定义一个 global…...
Kotlin协程Semaphore withPermit约束并发任务数量
Kotlin协程Semaphore withPermit约束并发任务数量 import kotlinx.coroutines.* import kotlinx.coroutines.sync.Semaphore import kotlinx.coroutines.sync.withPermit import kotlinx.coroutines.launch import kotlinx.coroutines.runBlockingfun main() {val permits 1 /…...
LangChain, MCP Server, Qwen-Agent等测试及问题记录
LangChain LangGraph 参考官方文档:https://langchain-ai.github.io/langgraph/tutorials/introduction/ 1. 这里使用Qwen系列模型进行测试 由于想测试通过LangGraph编排让大模型调用工具,所以首先查询支持Function Calling的大模型: https://help.a…...
学习设计模式《一》——简单工厂
一、基础概念 1.1、接口 简单的说:接口是【用来实现类的行为定义、约束类的行为】(即:定义可以做什么);接口可以包含【实例方法】、【属性】、【事件】、【索引器】或这四种成员类型的任意组合。 接口的优点࿱…...
51单片机实验三:数码管动态显示
目录 一、实验环境与实验器材 二、实验内容及实验步骤 1. 数码管动态扫描0-5 2. 利用余辉效应使单片机数码管“同时显示”0-5。 3. B站小仿真(动态原理显示hello) 一、实验环境与实验器材 环境:Keli,STC-ISP烧写软件,Proteus…...
[TriCore][TC3XX][用户手册] - 16.中断控制器 - IR
关键词: TC3XX 用户手册;TC3XX Interrupt Router;TC397 用户手册;TC397 中断控制器; 简介: 本篇为英飞凌 TC3XX 用户手册第 16 章翻译 - Interrupt Router (IR) 手册适用于 TC3XX(包括 TC397…...
Python语言基础教程(上)4.0
✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…...
快速入门smolagents
官方教程地址:Agents - Guided tour 1. 安装 pip install smolagents[litellm] 或者 uv add smolagents[litellm] 2. 配置api key 这里我用的火山的api,注意如果是使用的火山或阿里云的这种服务商的api,model_id这里要以"openai/&qu…...
第 3 期:逆过程建模与神经网络的作用(Reverse Process)
一、从正向扩散到逆向去噪:生成的本质 在上期中我们讲到,正向扩散是一个逐步加入噪声的过程,从原始图像 x_0到接近高斯分布的 x_T: 而我们真正关心的,是从纯噪声中逐步还原原图的过程,也就是逆过程&…...
RAG-概述
RAG 概述 RAG(Retrieval Augmented Generation, 检索增强生成)是一种技术框架,其核心在于当 LLM 面对解答问题或创作文本任务时,首先会在大规模文档库中搜索并筛选出与任务紧密相关的素材,继而依据这些素材精准指导后续…...
Python 中的数据类型有哪些
Python 中的数据类型有哪些? Python 是一种动态类型语言,支持多种内置数据类型,并且可以自定义数据类型。以下是 Python 中常见和重要的数据类型: 一、基本数据类型 整数(int) 表示整数,没有小…...
梯度下降,共轭梯度,牛顿法,拟牛顿法的收敛速度对比
一、收敛速度理论对比 方法收敛速度(一般非线性函数)收敛速度(二次凸函数)局部收敛性(接近极小点时)收敛阶梯度下降(GD)线性收敛(Linear)线性收敛࿰…...
深入浅出目标检测:从入门到YOLOv3,揭开计算机视觉的“火眼金睛”
目录 揭开目标检测的神秘面纱 什么是目标检测?为什么它如此重要?定义:图像分类、目标检测、目标跟踪、实例分割的区别与联系应用场景讲解目标检测的输出:边界框 (Bounding Box) 和类别 (Class)目标检测在AI领域的地位和发展趋势&…...
Odoo:免费开源的轧制品行业管理软件
Odoo免费开源的轧制品行业管理软件能够帮助建材、电线电缆、金属、造纸包装以及纺织品行业提高韧性和盈利能力,构筑美好未来。 文 | 开源智造(OSCG)Odoo金牌服务 提高供应链韧性,赋能可持续发展 如今,金属…...
51单片机实验六:通用型1602液晶操作方法
目录 一、实验环境与实验器材 二、实验内容及实验步骤 1. 目标:用C语言编程,实现在1602液晶的第一行显示“I LOVE MCU!”,在第二行显示WWW.TXMCU.COM。 2.目标:用C语言编程,实现第一行从右侧移入“Hello everyone!”…...
原型模式详解及c++代码实现(以自动驾驶感知场景为例)
模式定义 原型模式(Prototype Pattern)是一种创建型设计模式,通过克隆已有对象来创建新对象,避免重复执行昂贵的初始化操作。该模式特别适用于需要高效创建相似对象的场景,是自动驾驶感知系统中处理大量重复数据结构的…...
datasheet数据手册-阅读方法
DataSheet Datasheet(数据手册):电子元器件或者芯片的数据手册,一般由厂家编写,格式一般为PDF,内容为电子分立元器件或者芯片的各项参数,电性参数,物理参数,甚至制造材料…...
C言雅韵集:野指针
嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...
2 celery环境搭建
1. 安装 Celery 及依赖 1.1 安装 Celery 使用 pip 安装 Celery(推荐 Python 3.7 环境): pip install celery1.2 选择并安装 Broker Celery 需要一个消息中间件(Broker)来传递任务。以下是两种常用 Broker 的安装方…...
alertManager部署安装、告警规则配置详解及告警消息推送
java接受告警请求RestController RequestMapping("/alert") Slf4j public class TestApi {private static final DateTimeFormatter FORMATTER DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");RequestMappingpublic void sendTemplate(HttpServl…...
day45——非递减数列(LeetCode-665)
题目描述 给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 < i < n-2),总满足 nums[i] < nums[i …...
LeetCode19.删除链表的倒数第N个节点
题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。请用一次扫描实现 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出ÿ…...
Kafka系列之:计算kafka集群topic占的存储大小
Kafka系列之:计算kafka集群topic占的存储大小 topic存储数据格式统计topic存储大小定时统计topic存储大小topic存储数据格式 单位是字节大小 size_bytes{directory="/data/datum/kafka/optics-all" } 782336计算topic存储大小脚本逻辑是: 计算指定目录或文件的大小…...
Logisim数字逻辑实训——计数器设计与应用
4位递增计数器 六进制计数器 十进制计数器 六十进制计数器 二十四进制计数器 计时器...
安卓手机如何改ip地址教程
对于安卓手机用户而言,ip修改用在电商、跨境电商、游戏搬砖、社交软件这些需要开多个账号的项目。因为多个设备或账号又不能在同一ip网络下,所以修改手机的IP地址防检测成为一个必要的操作。以下是在安卓手机上更改IP地址的多种方法及详细步骤࿰…...
论文阅读--Orient Anything
通过渲染3D模型来学习不同方向下物体的外观,并从单张和自由视角的图像中估计物体方向 1. 数据生成:基于 3D 渲染构建大规模方向标注数据集 - 数据来源: 使用 Objaverse 数据库中的高质量 3D 模型,进行筛选和预处理。 - 筛选规范…...
ASP.NET MVC 实现增删改查(CRUD)操作的完整示例
提供一个完整的 ASP.NET MVC 实现增删改查(CRUD)操作的示例。该示例使用 SQL Server 数据库,以一个简单的 Product 实体为例。 步骤 1:创建 ASP.NET MVC 项目 首先,在 Visual Studio 中创建一个新的 ASP.NET MVC 项目…...
ASP.NET常见安全漏洞及修复方式
Microsoft IIS 版本信息泄露 查看网页返回的 Header 信息,默认会包含 IIS,ASP.NET 版本信息: 隐藏 Server 标头 编辑 web.config 文件,在 system.webServer 节点中配置 requestFiltering 来移除Server标头: <sec…...
文件系统的npu和内核的npu有什么区别
我在编译rk3588的内核和文件系统时候,发现都编译到rknpu这个文件,那么文件系统的npu和内核的npu有什么根本的区别吗? 我可以理解为,文件系统下是应用程序,内核下是驱动程序。 功能定位 内核中的 NPU 源码 核心功能&am…...
RUI桌面TV版最新版免费下载-安卓电视版使用教程
在智能电视的使用中,拥有一款好用的桌面应用能极大提升体验,RUI桌面TV版就是这样一款实用的工具。下面为大家带来它的免费下载及安卓电视版使用教程。 一、下载步骤 首先确保你的安卓电视已连接网络。打开电视自带的应用商店,在搜索栏输入“…...
android的配置检查 查看安卓设备配置
Android系统属性配置与内存管理指南 在Android开发过程中,了解系统属性配置和内存管理机制对应用性能优化至关重要。本文将介绍如何通过adb命令查询和修改系统属性,以及如何合理管理应用内存。 一、adb命令查询当前堆内存信息 1. 查询所有配置 adb s…...
RHCE的简单配置
一:配置qq第三方客户端验证 1.安装第三方邮件客户端软件 2.mail程序登录验证qq账号 3.在qq客户端程序(如浏览器中进入邮箱登录QQ邮箱->设置->账户)中通过设置开启imap/smtp服 务提供第三方程序账号的授权码 4.因为需要 QQ 邮箱的 S…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(7):(1)ながら 一边。。一边 (2)。。。し。。。し。。 又……又……
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(7):(1)ながら 一边。。一边 (2)。。。し。。。し。。 又……又…… 1、前言(1)情况说明(2)工程师…...
【 图像梯度处理,图像边缘检测】图像处理(OpenCv)-part6
13 图像梯度处理 13.1 图像梯度 边缘提取是图像处理中的一个重要任务,其目的是检测图像中灰度值发生显著变化的区域,这些区域通常对应于图像中的物体边界、纹理变化或深度变化等。边缘提取的原理可以分为以下几个关键步骤: 1. 边缘的定义和…...
一本通 2063:【例1.4】牛吃牧草 1005:地球人口承载力估计
Topic: Ideas: 为什么把这两道题放在一起呢?就是因为这两道题很类似,都是很简单的数学题,只要你会列出数学等式,你就学会这道题了! 下面把计算过程展示给大家 Code: //2025/04/18…...
下载HBuilder X,使用uniapp编写微信小程序
到官网下载HBuilder X 地址:HBuilderX-高效极客技巧 下载完成后解压 打开解压后的文件夹找到HBuilderX.exe 打开显示更多,发送到桌面快捷方式 到桌面上启动HBuilderX.exe启动应用 在工具点击插件安装 选择安装Vue3编译器 点击新建创建Vue3项目 编写项目…...
4.18---缓存相关问题(操作原子性,击穿,穿透,雪崩,redis优势)
为什么要用redis做一层缓存,相比直接查mysql有什么优势? 首先介绍Mysql自带缓存机制的问题: MySQL 的缓存机制存在一些限制和问题,它自身带的缓存功能Query Cache只能缓存完全相同的查询语句,对于稍有不同的查询语句,…...
前端:uniapp中uni.pageScrollTo方法与元素的overflow-y:auto之间的关联
在uniapp中,uni.pageScrollTo方法与元素的overflow-y:auto属性之间存在以下关联和差异: 一、功能定位差异 uni.pageScrollTo 属于页面级滚动控制,作用于整个页面容器34。要求页面内容高度必须超过屏幕高度,且由根元素下…...
获取不到AndroidManifest中的meta-data
现象描述 最近在项目中接入穿山甲广告的sdk,快速实现了核心功能验证。接下来就准备规范代码正式使用,却掉了一个坑,略做记录。 穿山甲sdk提供了一个appid的参数,不同渠道包是不同的,所以将其配入了gradle的productFl…...
Python学习之Matplotlib
Python学习之Matplotlib Matplotlib是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形.通过Matplotlib,开发者可以仅需要几行代码,便可以生成饼图,直方图,功率谱,条形图,错误图,散点图等 1.1 图形的基本构成 一个完整的图,包括figure,a…...
Motion Tracks:少样本模仿学习中人-机器人之间迁移的统一表征
25年1月来自Cornell和Stanford的论文“MOTION TRACKS: A Unified Representation for Human-Robot Transfer in Few-Shot Imitation Learning”。 教会机器人自主完成日常任务仍然是一项挑战。模仿学习 (IL) 是一种强大的方法,它通过演示向机器人灌输技能ÿ…...
【Spring Boot】MyBatis入门:连接Mysql数据库、测试单元、连接的常见错误
MyBatis入门 1.什么是MyBatis?2.准备工作2.1.创建项目2.2.MySQL数据准备2.3.创建对应的实体类 3.写配置文件和获取数据3.1写配置文件3.2 持久层代码 4.单元测试5.连接数据库时常见的错误5.1 url 配置错误5.2 MySQL账号密码错误5.3 找不到数据库5.4 表错误5.3 云服务…...
【AI插件开发】Notepad++ AI插件开发实践:支持配置界面
一、引用 此前的系列文章已基本完成了Notepad的AI插件的功能开发,但是此前使用的配置为JSON配置文件,不支持界面配置。 本章在此基础上集成支持配置界面,这样不需要手工修改配置文件,直接在界面上操作,方便快捷。 注…...
《Spring Boot 测试框架指南:@SpringBootTest与Mockito的最佳实践》
大家好呀!👋 今天我要和大家聊聊Spring Boot测试的那些事儿。作为一名Java开发者,写代码很重要,但写测试同样重要!💯 想象一下,你建了一座漂亮的房子🏠,但如果没有质量检…...
《数据结构初阶》【时间复杂度 + 空间复杂度】
《数据结构初阶》【时间复杂度 空间复杂度】 前言:-----------------------------------------1. 什么是数据结构?2. 什么是算法? -----------------------------------------算法的时间复杂度和空间复杂度1. 为什么要引入时间复杂度和空间复…...
【深度学习—李宏毅教程笔记】Self-attention
目录 一、Self-attention 的引入 1、多样化的输入形式 2、典型的下游任务下游任务 3、传统“全连接 窗口”方法的局限 4、Self‑Attention 的引入 二、Self-attention 的架构 1、Self-attention层的框图表示 2、Self-attention 层的矩阵运算过程 三、Multi-head Self…...
PHP腾讯云人脸核身获取Access Token
参考腾讯云官方文档: 人脸核身 获取 Access Token_腾讯云 public function getAccessToken(){$data [appId > , //WBappid,https://cloud.tencent.com/document/product/1007/49634secret > ,grant_type > client_credential, //授权类型version > 1…...
pytorch基本操作2
torch.clamp 主要用于对张量中的元素进行截断(clamping),将其限制在一个指定的区间范围内。 函数定义 torch.clamp(input, minNone, maxNone) → Tensor 参数说明 input 类型:Tensor 需要进行截断操作的输入张…...
Linux服务器配置Anaconda环境、Pytorch库(图文并茂的教程)
引言:为了方便后续新进组的 师弟/师妹 使用课题组的服务器,特此编文(ps:我导从教至今四年,还未招师妹) ✅ NLP 研 2 选手的学习笔记 笔者简介:Wang Linyong,NPU,2023级&a…...