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/9/8 12:08:55 阅读更多 →
基于LLM与OpenClaw框架的自动化测试报告生成Skill设计与实践

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

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

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

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

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

2026/9/21 14:15:23 阅读更多 →

最新新闻

速卖通卖家登陆自动化:5个实战项目框架深度对比

速卖通卖家登陆自动化:5个实战项目框架深度对比

速卖通卖家登陆自动化:5个实战项目框架深度对比 别再说你只会写 for 循环和 if 判断。 学会语法却不知怎么搭项目 ,这是90%初学者的死穴。 今天不讲虚的,直接拆解 速卖通卖家登陆 背后的5种主流自动化方案,看看谁才是你的救命稻草。…

2026/9/22 21:50:13 阅读更多 →
电脑显示器有雪花波纹排查指南:5步定位硬件故障最佳实践

电脑显示器有雪花波纹排查指南:5步定位硬件故障最佳实践

电脑显示器有雪花波纹排查指南:5步定位硬件故障最佳实践 面试被问原理答不上来,是许多初中级开发者最头疼的噩梦。当你自信满满地描述项目架构时,面试官突然抛出“电脑显示器有雪花波纹”这种看似生活化实则考验底层逻辑的问题,瞬间让你大脑一片空白。这…

2026/9/22 21:50:13 阅读更多 →
3行代码搞定平方根函数图解原理

3行代码搞定平方根函数图解原理

3行代码搞定平方根函数图解原理 ValueError: math domain error 。 屏幕上一堆红色的 Traceback,你盯着 File "xxx.py", line 5 发愣。…

2026/9/22 21:50:13 阅读更多 →
3个案例讲透老鼠赛跑底层逻辑,一文搞懂技术瓶颈

3个案例讲透老鼠赛跑底层逻辑,一文搞懂技术瓶颈

3个案例讲透老鼠赛跑底层逻辑,一文搞懂技术瓶颈 报错堆栈里全是 Thread-42 在死循环,CPU 飙到 100% 却查不出业务逻辑错误。这种“老鼠赛跑”现象,90% 的后端工程师都踩过坑。 所谓老鼠赛跑,本质是 资源竞争导致的无效循环…

2026/9/22 21:50:13 阅读更多 →
3个坑点讲透关注公众号领1元红包最佳实践

3个坑点讲透关注公众号领1元红包最佳实践

3个坑点讲透关注公众号领1元红包最佳实践 版本升级后 API 全变了,导致原本跑通的逻辑瞬间报错。面对这种“断崖式”的变更,盲目复制 Stack Overflow 上的旧代码只会让你死得更惨。掌握微信生态对接的 最佳实践…

2026/9/22 21:50:13 阅读更多 →
3天搞定ios暗黑复仇者内购,手写实现避坑指南

3天搞定ios暗黑复仇者内购,手写实现避坑指南

3天搞定ios暗黑复仇者内购,手写实现避坑指南 看了一堆教程还是不会写项目?别急,问题不在你笨,在于没人带你走通“从0到1”的闭环。今天这篇,我不讲虚的,直接拆解一个 ios暗黑复仇者内购…

2026/9/22 21:49:12 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/22 8:51:04 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →