zed 2i相机坐标系与内参、外参
相应内外参如下相机型号 : ZED 2i序列号 : 31474187固件版本 : 相机 1523 / 传感器 778 左相机 Left 内参 分辨率 : 1280 x 720焦距 fx, fy : 536.4066, 536.4066主点 cx, cy : 642.2694, 351.1544内参矩阵 K :[[536.40655518 0. 642.26940918][ 0. 536.40655518 351.15435791][ 0. 0. 1. ]]视场角 FOV : h100.07°, v67.74°, d107.71°畸变系数 : [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] 右相机 Right 内参 分辨率 : 1280 x 720焦距 fx, fy : 536.4066, 536.4066主点 cx, cy : 642.2694, 351.1544内参矩阵 K :[[536.40655518 0. 642.26940918][ 0. 536.40655518 351.15435791][ 0. 0. 1. ]]视场角 FOV : h100.07°, v67.74°, d107.71°畸变系数 : [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] 加速度计 Accelerometer 参数 [说明] IMU 没有 fx/fy/cx/cy 那种相机内参它的参数 采样率 量程 分辨率 噪声密度 随机游走采样率 : 400.0 Hz量程 : -78.4800033569336 ~ 78.4800033569336 m/s²分辨率 : 0.002395019633695483 m/s²噪声密度 : 0.0004400000034365803 m/s²/√Hz随机游走 : 0.02019999921321869 m/s²/s/√Hz 陀螺仪 Gyroscope 参数 [说明] IMU 没有 fx/fy/cx/cy 那种相机内参它的参数 采样率 量程 分辨率 噪声密度 随机游走采样率 : 400.0 Hz量程 : -1000.0 ~ 1000.0 °/s分辨率 : 0.030517578125 °/s噪声密度 : 0.004991999827325344 °/s/√Hz随机游走 : 0.042399998754262924 °/s/s/√Hz 磁力计 Magnetometer 参数 [说明] IMU 没有 fx/fy/cx/cy 那种相机内参它的参数 采样率 量程 分辨率 噪声密度 随机游走采样率 : 50.0 Hz量程 : -2500.0 ~ 2500.0 µT分辨率 : 0.30000001192092896 µT噪声密度 : 0.07000000029802322 µT/√Hz随机游走 : N/A 气压计 Barometer 参数 [说明] IMU 没有 fx/fy/cx/cy 那种相机内参它的参数 采样率 量程 分辨率 噪声密度 随机游走采样率 : 25.0 Hz量程 : 300.0 ~ 1100.0 hPa分辨率 : 0.009999999776482582 hPa噪声密度 : 0.00039999998989515007 hPa/√Hz随机游走 : N/A 外参 左相机 Left - 右相机 Right 旋转矩阵 R :[[1. 0. 0.][0. 1. 0.][0. 0. 1.]]旋转角 (roll/pitch/yaw) : 0.0000° / -0.0000° / 0.0000°平移向量 t [右相机 Right 在 左相机 Left 系下的位置] : [0.11990686 0. 0. ]坐标变换P_左相机 Left R · P_右相机 Right t[左相机 Left 在 右相机 Right 坐标系中的位置] : [-0.11990686 0. 0. ]变换矩阵 T :[[1. 0. 0. 0.11990686][0. 1. 0. 0. ][0. 0. 1. 0. ][0. 0. 0. 1. ]] 外参 左相机 Left - IMU 旋转矩阵 R :[[ 0.99976206 0.01169387 -0.01841571][-0.0116109 0.99992198 0.00460632][ 0.01846814 -0.0043914 0.99981982]]旋转角 (roll/pitch/yaw) : -0.2517° / -1.0582° / -0.6654°平移向量 t [IMU 在 左相机 Left 系下的位置] : [ 0.023061 -0.000217 -0.002 ]坐标变换P_左相机 Left R · P_IMU t[左相机 Left 在 IMU 坐标系中的位置] : [-2.30210978e-02 -6.14721674e-05 2.42532406e-03]变换矩阵 T :[[ 9.99762058e-01 1.16938744e-02 -1.84157118e-02 2.30610017e-02][-1.16108973e-02 9.99921978e-01 4.60632052e-03 -2.17000023e-04][ 1.84681416e-02 -4.39140107e-03 9.99819815e-01 -2.00000009e-03][ 0.00000000e00 0.00000000e00 0.00000000e00 1.00000000e00]]双目基线 baseline 0.1199 m注意在运行代码与使用相机前需要先安装zed2i相机的sdk我的cuda是cu11.7所以安装的sdk是ZED_SDK_Windows_cuda11.8_v4.2.5.exesdk链接如下我用夸克网盘给你分享了「ZED_SDK_Windows_cuda11.8_v4.2.5.exe」点击链接或复制整段内容打开「夸克网盘APP」即可获取。/~52173aDuRT~:/链接https://pan.quark.cn/s/b46717dbb838?pwdjdNr提取码jdNr相机内外参直接提取的代码打印 ZED2i 的相机内参 / IMU 参数 / 外参。 本文件是 realsense-435i-vio/realsense_calib_params.py 的 ZED2i 移植版。 ZED2i 与 D435i 的标定信息来源不同 RealSense按流depth/color/infrared/accel/gyro分别取 profile ZED2i 所有参数都在 zed.get_camera_information() 里一次性给出。 映射 视频流内参 - camera_configuration.calibration_parameters.left_cam / right_cam IMU 参数 - sensors_configuration.accelerometer_parameters / gyroscope_parameters 采样率/量程/噪声密度/随机游走 外参 - calibration_parameters.stereo_transform左-右右相机在左相机系下的位姿t≈baseline sensors_configuration.camera_imu_transform左相机-IMU import math import numpy as np import pyzed.sl as sl # --------------------------------------------------------------------------- # 视频流内参左 / 右相机 # --------------------------------------------------------------------------- def print_video_intrinsics(name, cp): 打印单个相机内参。cp 为 sl.CameraParameters。 if cp is None: print(f[WARN] {name}: 参数不可用跳过) return K np.array([ [cp.fx, 0, cp.cx], [0, cp.fy, cp.cy], [0, 0, 1.0], ]) print(f\n {name} 内参 ) print(f 分辨率 : {cp.image_size.width} x {cp.image_size.height}) print(f 焦距 fx, fy : {cp.fx:.4f}, {cp.fy:.4f}) print(f 主点 cx, cy : {cp.cx:.4f}, {cp.cy:.4f}) print(f 内参矩阵 K :\n{K}) print(f 视场角 FOV : h{cp.h_fov:.2f}°, v{cp.v_fov:.2f}°, d{cp.d_fov:.2f}°) print(f 畸变系数 : {list(cp.disto)}) # --------------------------------------------------------------------------- # IMU 参数加速度计 / 陀螺仪 # --------------------------------------------------------------------------- # sl.SENSORS_UNIT 枚举 - 人类可读单位 _SENSOR_UNIT_STR { sl.SENSORS_UNIT.M_SEC_2: m/s², sl.SENSORS_UNIT.DEG_SEC: °/s, sl.SENSORS_UNIT.U_T: µT, sl.SENSORS_UNIT.HPA: hPa, sl.SENSORS_UNIT.CELSIUS: °C, sl.SENSORS_UNIT.HERTZ: Hz, } def _unit_str(sensor_unit): 把 sl.SENSORS_UNIT 枚举转成可读单位字符串。 return _SENSOR_UNIT_STR.get(sensor_unit, str(sensor_unit)) def print_sensor_parameters(name, sp): 打印单个传感器参数。sp 为 sl.SensorParameters。 if sp is None or not sp.is_available: print(f\n {name} 参数 (不可用)) return unit _unit_str(sp.sensor_unit) # sensor_range 是 numpy.ndarray形状 (2,)[min, max] rng sp.sensor_range print(f\n {name} 参数 ) print(f [说明] IMU 没有 fx/fy/cx/cy 那种相机内参) print(f 它的参数 采样率 量程 分辨率 噪声密度 随机游走) print(f 采样率 : {sp.sampling_rate} Hz) print(f 量程 : {rng[0]} ~ {rng[1]} {unit}) print(f 分辨率 : {sp.resolution} {unit}) nd N/A if math.isnan(sp.noise_density) else f{sp.noise_density} {unit}/√Hz rw N/A if math.isnan(sp.random_walk) else f{sp.random_walk} {unit}/s/√Hz print(f 噪声密度 : {nd}) print(f 随机游走 : {rw}) # --------------------------------------------------------------------------- # 外参 # --------------------------------------------------------------------------- def rotation_matrix_to_euler(R): 3x3 旋转矩阵 - (roll, pitch, yaw)单位度。 采用 ZYX 内旋约定R Rz(yaw) Ry(pitch) Rx(roll) roll 绕 X 轴、pitch 绕 Y 轴、yaw 绕 Z 轴。 sy np.sqrt(R[0, 0] ** 2 R[1, 0] ** 2) if sy 1e-6: roll np.arctan2(R[2, 1], R[2, 2]) pitch np.arctan2(-R[2, 0], sy) yaw np.arctan2(R[1, 0], R[0, 0]) else: # 万向锁退化pitch ≈ ±90° roll np.arctan2(-R[1, 2], R[1, 1]) pitch np.arctan2(-R[2, 0], sy) yaw 0.0 return np.degrees([roll, pitch, yaw]) def transform_to_R_t(transform): sl.Transform - (R, t)。transform.m 为 4x4 numpy.ndarray行主序。 布局同 ZED SDK 文档 [ R00 R01 R02 tx ] [ R10 R11 R12 ty ] [ R20 R21 R22 tz ] [ 0 0 0 1 ] m transform.m R np.array(m[:3, :3], dtypenp.float64) t np.array(m[:3, 3], dtypenp.float64) return R, t def print_extrinsics(name_from, name_to, transform): 打印外参旋转 平移 4x4 变换矩阵 欧拉角。 约定name_from - name_to 表示 name_to 在 name_from 坐标系下的位姿 机器人学里常见的 A - B B 在 A 系下的位姿即 T_A_B。 平移向量 t 即 name_to 原点在 name_from 系中的位置坐标变换为 P_{name_from} R · P_{name_to} t if transform is None: print(f[WARN] {name_from} - {name_to}: 参数不可用跳过) return R, t transform_to_R_t(transform) T np.eye(4) T[:3, :3] R T[:3, 3] t roll, pitch, yaw rotation_matrix_to_euler(R) # name_from 原点在 name_to 系中的位置反变换 -R^T·t pos_from_in_to (-R.T t).ravel() print(f\n 外参 {name_from} - {name_to} ) print(f 旋转矩阵 R :\n{R}) print(f 旋转角 (roll/pitch/yaw) : {roll:.4f}° / {pitch:.4f}° / {yaw:.4f}°) print(f 平移向量 t [{name_to} 在 {name_from} 系下的位置] : {t}) print(f 坐标变换P_{name_from} R · P_{name_to} t) print(f [{name_from} 在 {name_to} 坐标系中的位置] : {pos_from_in_to}) print(f 变换矩阵 T :\n{T}) def main(): init sl.InitParameters() init.coordinate_units sl.UNIT.METER zed sl.Camera() status zed.open(init) if status ! sl.ERROR_CODE.SUCCESS: print(f[ERROR] 无法打开 ZED2i请检查连接: {repr(status)}) return info zed.get_camera_information() calib info.camera_configuration.calibration_parameters sensors info.sensors_configuration print(f相机型号 : {info.camera_model}) print(f序列号 : {info.serial_number}) print(f固件版本 : 相机 {info.camera_configuration.firmware_version} / f传感器 {sensors.firmware_version}) # 视频流内参左 / 右相机 print_video_intrinsics(左相机 Left, calib.left_cam) print_video_intrinsics(右相机 Right, calib.right_cam) # IMU 参数 print_sensor_parameters(加速度计 Accelerometer, sensors.accelerometer_parameters) print_sensor_parameters(陀螺仪 Gyroscope, sensors.gyroscope_parameters) print_sensor_parameters(磁力计 Magnetometer, sensors.magnetometer_parameters) print_sensor_parameters(气压计 Barometer, sensors.barometer_parameters) # 外参 # stereo_transform左相机 - 右相机 右相机在左相机系下的位姿t ≈ baseline print_extrinsics(左相机 Left, 右相机 Right, calib.stereo_transform) print_extrinsics(左相机 Left, IMU, sensors.camera_imu_transform) print(f\n双目基线 baseline {calib.get_camera_baseline():.4f} m) print(f[说明] ZED2i 的灰度/彩色共用左相机无独立 RGB-IR 外参。) zed.close() if __name__ __main__: main()

相关新闻

试用期自我总结撰写指南:从STAR-P模型到十大场景实战

试用期自我总结撰写指南:从STAR-P模型到十大场景实战

1. 项目概述:一份报告,十次成长又到试用期尾声,相信很多朋友和我一样,正对着电脑屏幕,为那份“试用期自我总结报告”绞尽脑汁。这玩意儿,说简单也简单,无非是回顾过去、总结现在、展望未来&…

2026/8/16 2:54:49 阅读更多 →
基于LLM与OpenClaw框架的自动化测试报告生成Skill设计与实践

基于LLM与OpenClaw框架的自动化测试报告生成Skill设计与实践

1. 项目概述:为什么我们需要一个“自动写测试报告”的 Skill?在软件开发和测试的日常里,写测试报告这件事,说大不大,说小不小,但绝对是个“脏活累活”。想象一下这个场景:你刚跑完一轮包含上百个…

2026/8/16 2:53:48 阅读更多 →
老人独居看护摄像头怎么选?跌倒检测+一键呼叫,让牵挂落地的技术方案

老人独居看护摄像头怎么选?跌倒检测+一键呼叫,让牵挂落地的技术方案

一、痛点提出:独居老人最怕摔倒没人知道独居老人最怕的就是摔倒没人知道。跌倒已成为老年人意外伤害的首要原因,而“摔倒后无人知晓”是导致严重后果的关键因素。普通摄像头只能事后翻回放,无法在第一时间发现问题。中国电信在云南普洱市落地…

2026/8/16 2:53:48 阅读更多 →

最新新闻

LangGraph实战:构建有状态AI智能体工作流,解决复杂流程编排痛点

LangGraph实战:构建有状态AI智能体工作流,解决复杂流程编排痛点

1. 先搞清楚 LangGraph 到底解决了什么 Agent 开发痛点如果你正在用 LangChain 或者类似的框架做 AI 应用,尤其是涉及多步骤、有状态、需要协作的智能体(Agent),大概率会遇到几个头疼的问题:任务流程一复杂&#xff0c…

2026/8/16 3:55:09 阅读更多 →
Grok Bot本地部署与API集成指南:从环境准备到功能验证

Grok Bot本地部署与API集成指南:从环境准备到功能验证

这次我们来看一个刚在 Hacker News 上登顶热榜的开源项目——Grok Bot。它来自 x.ai,一个由知名企业家埃隆马斯克创立的 AI 研究公司。简单来说,Grok Bot 是一个可以本地部署、支持 API 调用、具备强大对话和推理能力的 AI 助手。它的核心吸引力在于&…

2026/8/16 3:55:09 阅读更多 →
AI助力东北老工业基地数字化营销转型

AI助力东北老工业基地数字化营销转型

1. 项目背景与核心价值在东北老工业基地转型的浪潮中,佳木斯这座传统农业与制造业为主的城市正面临数字化营销的迫切需求。作为深耕本地市场多年的营销从业者,我观察到三个关键现象:本地商户的线上获客成本从2019年的平均35元/人激增至2023年…

2026/8/16 3:55:09 阅读更多 →
零基础读懂 HTTP 与 API:一篇文章打通你的第一次接口调用

零基础读懂 HTTP 与 API:一篇文章打通你的第一次接口调用

零基础读懂 HTTP 与 API:一篇文章打通你的第一次接口调用 适合读者:刚学编程、想调用大模型或其他在线服务,但看到 curl、JSON、API Key 就发懵的新手。 读完你会:看得懂 curl、认得出状态码、会解析嵌套 JSON、理解 REST 风格、会…

2026/8/16 3:55:09 阅读更多 →
从Codex用户流失看AI开发工具体验优化:安装、集成与长期维护

从Codex用户流失看AI开发工具体验优化:安装、集成与长期维护

最近在几个开发者社群里,经常看到有人讨论从 Codex 切换到其他工具的经历。一开始,我以为这只是个别用户遇到了版本兼容或网络问题,但聊得多了,发现背后其实是一个更普遍的现象:很多开发者最初被 Codex 的某个特性吸引…

2026/8/16 3:55:09 阅读更多 →
Windows远程桌面连接Ubuntu:xrdp+Xorg保姆级配置与排错指南

Windows远程桌面连接Ubuntu:xrdp+Xorg保姆级配置与排错指南

1. 为什么需要从Windows远程登录Ubuntu桌面?如果你和我一样,日常工作主力是Windows,但开发、测试或者学习环境又离不开Linux,尤其是Ubuntu,那你一定遇到过这种场景:需要运行一个Linux下的图形化应用&#x…

2026/8/16 3:54:09 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →