恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

双目相机标定全流程:从数据采集到深度估计的避坑指南

  • 首页
  • 资讯中心
  • /
  • 双目相机标定全流程:从数据采集到深度估计的避坑指南

相关资讯

微信小程序就业平台实战:Spring Boot+MySQL闭环设计 2026/10/22 8:30:30
RAG检索系统设计9步:从切分、向量索引到混合召回与重排 2026/10/22 8:30:30
客户联络中心智能化:核心引擎架构与落地实践 2026/10/22 8:30:30

最新资讯

基于Node.js的小程序点餐系统设计与实现:从架构到部署全解析
基于Python Django的反诈管理系统开发实战:从数据库到可视化大屏
创业赛项目标签拆解:全球首创、行业唯一与自研AI的真实含金量
K8S从入门到实践:容器编排架构、集群部署与避坑指南
鲁棒故障估计:解耦执行器故障与外部扰动
容器化分布式集群搭建实战:从镜像构建到多节点编排

今日推荐

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南
压缩空气储能与热网热惯性联合优化调度:热电联产系统建模与求解
若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

本周热门

基于GMM的语音识别系统原理与MATLAB实现详解
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

双目相机标定全流程:从数据采集到深度估计的避坑指南

发布时间:2026/10/22 8:35:30
双目相机标定全流程:从数据采集到深度估计的避坑指南 简介双目相机数据采集与标定完整工程包面向三维建模、机器视觉与SLAM领域的研究者或开发者解决双目相机图像采集与内外参标定中流程繁琐、参数不易验证的问题。压缩包共49个文件大小3.82MB主要包含40张棋盘格标定图片、2个记录左右视图清单的txt、2个C源文件及Qt工程配置含界面文件与头文件另有对中文乱码问题的截图说明形成一套可运行的标定程序雏形。目前已有166人学习下载适用于希望从数据采集到标定输出完整走通一遍的初学者也适合作为参考工程进行二次开发。借助该包可学习如何组织左右图像数据、编写基于OpenCV/Qt的标定工具理解角点提取、单应矩阵与双目参数计算的基本流程并对照界面修改参数与扩展功能。整体结构清晰便于按需扩展。1. 双目相机数据采集、标定先搞懂包里装的是什么再做深度估计拿到一个名为“双目相机数据采集、标定.zip”的压缩包第一反应不该是解压后到处点开看而是先想清楚你在做什么。双目视觉的核心链路只有一条左右相机同步采集图像 → 通过标定求出内参、外参和畸变系数 → 对左右图做极线校正 → 再用立体匹配算出视差图 → 最终结合基线长度换算出深度。这个压缩包要解决的就是前两步里最容易被低估的数据采集与标定问题。很多入门者卡在“图像能显示但视差图全错”或者“深度值偏得离谱”根源几乎都是标定参数没做对、采集数据质量太差。本文把这套流程拆开讲透给你能直接照做的采集命令、标定脚本和参数陷阱分析适合正在做双目测距、机械臂抓取或视觉 SLAM 的工程师。2. 拆开压缩包目录结构、文件格式与采集工具的全貌拿到这样的压缩包第一件事是先不看代码把目录列出来搞清楚作者把哪几个环节的东西放在了一起。我解压过不少类似的包命名习惯虽各不相同但结构基本逃不出这几块图像数据目录、标定板样本、脚本文件、以及一份写标定参数的配置文件。2.1 数据目录里最常见的三种组织方式第一种是把左右图像分开放比如left/和right/两个目录文件名一一对应。这种方式最直观采集脚本只需要按序号生成配对文件后续标定时也方便直接按文件名索引。第二种是混合存放用文件名后缀区分左右比如frame_0001_L.png和frame_0001_R.png。第三种是存成视频流比如两个 mp4 文件标定时按帧抽取。前两种更适合做标定因为标定要求的是离散的、带完整棋盘格的静态图像对视频流方式在采集时容易抽到运动模糊严重的帧后期筛选成本高。2.2 标定板文件棋盘格还是圆点阵以及它的描述文件包里大概率会有一张棋盘格标定板的图示或者尺寸说明。棋盘格和圆点阵如对称圆点、非对称圆点都能用于标定但中文社区流传的教程大多用棋盘格因为 OpenCV 的findChessboardCorners接口成熟而且棋盘格角点提取对光照变化不敏感。真正要留意的是那张board.yaml或pattern.txt描述文件它记录了两个关键数字内角点数量和实际方格边长。如果拿到的标定板是 A4 纸打印的、贴在硬纸板上的那种测方格边长时要用游标卡尺量好几个格子的总长再取平均不要用打印设置里的“标称值”当成实际值——打印机的缩放比例经常会引入 1% 左右的误差这误差最终会直接乘到深度值上。2.3 采集脚本与参数文件里值得优先读的几个字段处理一份真实项目的压缩包建议先打开采集脚本和标定脚本看里面的参数定义而不是直接跑。常见参数有相机分辨率如 1280x720、帧率、图像格式、棋盘格尺寸square_size、内角点数pattern_size。这些字段直接决定你的硬件能不能跑通这套代码。比如采集脚本写死在CAP_PROP_FRAME_WIDTH1920而你手里的模组最高只支持 1280 分辨率那解压后第一件事就是改这里。标定脚本里通常会有一个CALIBRATION_FLAGS变量决定求解时是否固定主点、是否考虑切向畸变等。拿到包先核对这几项能省下两小时的排查时间。文件/字段常见位置用途如果不匹配会发生什么棋盘格角点数标定脚本常量指定棋盘格内角点行列数角点检测失败或误检方格边长配置文件物理尺度决定深度尺度深度值相差固定倍数图像分辨率采集脚本决定采集窗口大小分辨率不匹配导致校正映射越界相机编号采集脚本枚举左右相机的设备号左右图像互换标定结果镜像翻转2.4 拿到包后的第一个验证动作让数据跑通而不是先看算法压缩包解压后建议的动手顺序是先打开配置文件确认板子参数然后找一张左右图做角点检测输出角点数量和坐标。如果角点检测能跑通说明图像和OpenCV版本兼容如果检测直接报错或检测到的点数不是期望值先别怀疑算法检查图像里棋盘格是否完整、是否存在反光或阴影遮挡。这一步做完再跑完整标定流程。实际经验是很多标定失败案例里“标定代码报错率”并不高真正高发的是“标定结果看起来合理但深度完全不对”。这类问题的根因往往是采集环节漏了同步、或者板子尺寸量错。所以在解压之后我习惯先把采集脚本单独拎出来重新拍一组数据再走标定而不是直接复用包里的旧样本——旧样本的硬件状态和光照环境与你现在的场景不匹配标出来的参数可能偏离很严重。3. 数据采集双路读取、时间同步与丢帧排查标定数据的质量完全由采集阶段决定。很多人以为标定失败是算法不够好其实大多数情况是喂进去的图像本身就不合格。双目采集的真正难点不在于“能显示左右图”而在于左右帧之间要有足够高的时间一致性否则晃动板子时左右图里的棋盘格角点位置不匹配标定求解的误差直接起飞。3.1 硬件选型与控制方式为什么不建议用 HUB 分接两台 USB 相机做标定采集最常见的踩坑是用一个 USB HUB 接两台 USB 摄像头软件里开两个线程轮流读取。这种方案在极低帧率下勉强能跑但你挥动标定板时左右图的时间差可能到几十毫秒角点坐标偏差直接成了系统误差。如果预算允许优先选带硬件触发输入的双目模组通常是排线连接的双目一体机这类硬件能保证左右传感器同一时刻曝光。没有硬件同步条件的话我一般这样做降低采集帧率到 15fps 以下用软件触发方式每次采集时固定左右线程读取顺序并且宁可丢帧也不凑帧。丢帧的判定方法是给每一帧记录系统时间戳左右时间戳之差超过 2 倍的曝光周期就丢弃这一帧。3.2 用 Python OpenCV 写最小采集脚本同步、存储与命名下面给一个可直接跑的采集脚本基于 OpenCV 的 VideoCapture 双路读取。这个脚本适合 USB 双相机软件同步场景也是大多数压缩包采集工具的基础骨架。import cv2 import numpy as np import os import time left_cap cv2.VideoCapture(0) right_cap cv2.VideoCapture(1) # 统一分辨率与帧率避免单路参数不一致导致时间戳错位 left_cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) left_cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720) right_cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) right_cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720) # 设置较小的缓冲区减少旧帧堆积带来的同步偏差 left_cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) right_cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) save_dir_left ./calib_data/left save_dir_right ./calib_data/right os.makedirs(save_dir_left, exist_okTrue) os.makedirs(save_dir_right, exist_okTrue) frame_idx 0 print(按空格键保存当前左右帧按 q 退出) while True: ret_l, left left_cap.read() ret_r, right right_cap.read() if not ret_l or not ret_r: # 任一路读取失败就跳过不保存不完整的数据对 continue # 可选简单判断左右图像亮度是否异常用于过滤曝光跳变帧 display np.hstack([left, right]) cv2.imshow(dual, display) key cv2.waitKey(1) 0xFF if key ord( ): ts time.time() left_name os.path.join(save_dir_left, f{frame_idx:04d}.png) right_name os.path.join(save_dir_right, f{frame_idx:04d}.png) cv2.imwrite(left_name, left) cv2.imwrite(right_name, right) frame_idx 1 print(f保存帧 {frame_idx-1}, 时间戳 {ts:.4f}) elif key ord(q): break left_cap.release() right_cap.release() cv2.destroyAllWindows()这段代码的核心思路是每按一次空格同时保存当前左右帧而不是异步写入。CAP_PROP_BUFFERSIZE设为 1 是个关键点它让 VideoCapture 内部不积压旧帧否则你按下空格时读到的可能是半秒前的画面。采集时要把标定板举在画面中间偏左、偏右、偏上、偏下不同位置并且让棋盘格相对相机平面倾斜 20 到 45 度这样求解内参时才能收集到足够的透视信息。注意这套代码没有做硬触发它的同步精度上限取决于 USB 传输延迟所以采集时动作要慢不要在按下空格瞬间快速移动板子。3.3 需要采集多少张图像数量不是关键姿态覆盖才是很多标定指南说采集 20 到 30 张但实际需要看姿态多样性。10 张摆位充分分散的图像对在 OpenCV 标定里的重投影误差往往好过 30 张所有棋盘格几乎都处于同样平面姿态的图像对。这里有一个判断方法跑完标定后看每张图的角点重投影误差如果个别图像误差明显高于其他多半是那张图板子弯曲或反光导致角点定位偏了删掉重标比硬扛更有效。采集时我一般会在六个方向刻意采集——正视、左偏 30 度、右偏 30 度、上仰 30 度、下俯 30 度、旋转 45 度——每个方向采集 5 到 10 张再额外加几张离镜头近和远的这样才能把畸变模型的参数约束住。3.4 丢帧现象与排查手段从采集端追到驱动层当左右图时间戳偏差过大时你去检查角点坐标就会发现棋盘格外点对的 y 坐标差不再是稳定的基线视差而是一个随板子晃动幅度剧烈变动的值。排查步骤按优先级来先把系统里后台的摄像头软件全部关掉确认 OpenCV 拿到的设备不是被别的进程占用然后查看内核日志里的 xhci 报错USB 带宽饱和时会周期性掉帧最后对比左右图的时间戳差值如果每帧都差 30ms 以上就该考虑用相机 SDK 的硬件触发模式或者换同步模组了。软件同步方案的天花板就是系统调度延迟这是架构限制不是改几个参数能解决的。4. 标定链路从棋盘格角点到立体校正参数标定这一步是压缩包里最厚的部分。单一目标定负责求出每台相机的内参矩阵和畸变系数双目标定负责求两台相机之间的旋转和平移关系立体校正则把左右图像变换到同一平面使极线水平对齐。每一步的输出都直接影响后续视差计算的正确性。4.1 先拆分文件路径与参数表搞清楚包里的标定代码基于哪个流程常见做法是包里已经有一套基于 cv2 的标定脚本。先打开看它调用了哪些核心函数findChessboardCorners、calibrateCamera、stereoCalibrate、stereoRectify、initUndistortRectifyMap。如果只有前两个函数那这个包只做了单目标定双目外参需要你自己补。补的时候注意stereoCalibrate必须在两张图上都用同一个棋盘格角点序列并且要传入左右相机的内参初值、畸变初值。这里最容易犯的错误是直接把单目标定的结果填进去但flags参数选错比如让stereoCalibrate同时优化内参结果外参和单目内参互相打架。4.2 角点检测与可视化检查每张图都该过这一关import cv2 import glob import numpy as np # 棋盘格内角点数例如 9x6 表示横向9个、纵向6个内角点 pattern_size (9, 6) square_size 0.025 # 单位米需要实测 objp np.zeros((pattern_size[0] * pattern_size[1], 3), np.float32) objp[:, :2] np.mgrid[0:pattern_size[0], 0:pattern_size[1]].T.reshape(-1, 2) objp * square_size left_files sorted(glob.glob(./calib_data/left/*.png)) right_files sorted(glob.glob(./calib_data/right/*.png)) # 只处理左右文件名完全匹配的帧 valid_pairs [] for lf, rf in zip(left_files, right_files): left cv2.imread(lf, cv2.IMREAD_GRAYSCALE) right cv2.imread(rf, cv2.IMREAD_GRAYSCALE) ret_l, corners_l cv2.findChessboardCorners(left, pattern_size, None) ret_r, corners_r cv2.findChessboardCorners(right, pattern_size, None) if ret_l and ret_r: # 亚像素精化提高角点定位精度 criteria (cv2.TERM_CRITERIA_EPS cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) corners_l cv2.cornerSubPix(left, corners_l, (11, 11), (-1, -1), criteria) corners_r cv2.cornerSubPix(right, corners_r, (11, 11), (-1, -1), criteria) valid_pairs.append((lf, rf, corners_l, corners_r)) print(f有效对: {lf.split(/)[-1]}) else: print(f跳过: {lf.split(/)[-1]}) print(f有效图像对数量: {len(valid_pairs)})cornerSubPix在 OpenCV 棋盘格角点精化里的地位很关键。原始findChessboardCorners返回的角点是像素级整数坐标亚像素精化后能达到亚像素精度。这一步不做后续标定的重投影误差会明显偏大。criteria里的三个参数分别表示迭代终止条件类型、最大迭代次数、角点移动最小阈值一般取 30 和 0.001 足够。这一段跑出来如果有效图像对数量低于 15建议重新采集不要硬标。4.3 单目标定理解内参矩阵和畸变系数如何被约束# 继续上面的 valid_pairs 数据流 obj_points [] # 三维世界坐标 img_points_l [] img_points_r [] for lf, rf, corners_l, corners_r in valid_pairs: obj_points.append(objp) img_points_l.append(corners_l) img_points_r.append(corners_r) # 单目标定左相机 rms_l, camera_matrix_l, dist_l, rvecs_l, tvecs_l cv2.calibrateCamera( obj_points, img_points_l, left.shape[::-1], None, None ) # 单目标定右相机 rms_r, camera_matrix_r, dist_r, rvecs_r, tvecs_r cv2.calibrateCamera( obj_points, img_points_r, right.shape[::-1], None, None ) print(f左相机重投影误差: {rms_l:.4f} 像素) print(f右相机重投影误差: {rms_r:.4f} 像素) print(f左相机内参矩阵:\n{camera_matrix_l}) print(f左相机畸变系数: {dist_l.ravel()})calibrateCamera的返回值里rms表示重投影均方根误差单位是像素。这个数能直观反映标定质量——低于 0.3 像素算很好0.5 左右可以接受超过 1.0 就要检查角点检测或数据质量了。camera_matrix包含 fx、fy、cx、cy 四个核心参数fx 和 fy 代表焦距相关的像素尺度cx、cy 是主点。畸变系数通常接受 4 到 5 个参数前三个是径向畸变 k1、k2、k3后两个是切向畸变 p1、p2。标定时传入的image_size必须和采集分辨率一致不一致会让 OpenCV 内部初始化相机矩阵时产生比例错误严重的会直接导致校正图黑边异常。4.4 双目标定与立体校正左右相机关系和外参求解# 双目标定以左相机坐标系为世界坐标系 flags cv2.CALIB_FIX_INTRINSIC criteria_stereo (cv2.TERM_CRITERIA_MAX_ITER cv2.TERM_CRITERIA_EPS, 100, 1e-5) rms_stereo, camera_matrix_l, dist_l, camera_matrix_r, dist_r, R, T, E, F cv2.stereoCalibrate( obj_points, img_points_l, img_points_r, camera_matrix_l, dist_l, camera_matrix_r, dist_r, left.shape[::-1], criteriacriteria_stereo, flagsflags ) # 立体校正alpha 参数控制黑色边缘保留程度 rectify_scale 0.0 # 0 表示裁剪所有黑边1 表示保留全部图像区域 R1, R2, P1, P2, Q, roi1, roi2 cv2.stereoRectify( camera_matrix_l, dist_l, camera_matrix_r, dist_r, left.shape[::-1], R, T, alpharectify_scale ) # 生成映射表后续 remap 只需要查表 map1_l, map2_l cv2.initUndistortRectifyMap( camera_matrix_l, dist_l, R1, P1, left.shape[::-1], cv2.CV_32FC1 ) map1_r, map2_r cv2.initUndistortRectifyMap( camera_matrix_r, dist_r, R2, P2, left.shape[::-1], cv2.CV_32FC1 ) # 保存标定结果后续程序直接加载 np.savez(./stereo_calib.npz, camera_matrix_lcamera_matrix_l, dist_ldist_l, camera_matrix_rcamera_matrix_r, dist_rdist_r, RR, TT, R1R1, R2R2, P1P1, P2P2, QQ)flags cv2.CALIB_FIX_INTRINSIC表示双目标定过程中固定单目标定得到的内参只优化外参。这个选择很重要如果你的单目标定质量已经不错放开内参优化反而可能让内外参耦合得到数值上更优但物理上不合理的结果。stereoRectify返回的R1、R2是左右相机的旋转矩阵P1、P2是新的投影矩阵Q是视差到深度的映射矩阵。参数alpha0.0会裁剪掉所有无效黑边图像更紧凑alpha1.0会保留完整图像区域但生成大量黑边一般不推荐。如果你后续要直接使用Q矩阵转深度图记得Q里的基线信息来自T的模长而T的单位由你在构建objp时的square_size决定量错格子尺寸深度就错一个比例因子。4.5 校正效果的可视化检查极线是否水平、重投影误差是否达标标定算完了不等于标定对了。常见验证动作是把左右图remap之后横向拼接在图上画一条水平线然后找对应角点看是否落在同一水平线上。OpenCV 没有内置的“极线可视化”接口需要手动绘制。另一个量化指标是立体标定的rms_stereo一般在单目 rms 的 1.2 到 1.5 倍以内算正常。如果立体 rms 比单目 rms 大好几倍最可能的原因是左图角点和右图角点序号没有一一对应比如某张图中左图检测到 54 个角点、右图检测到 53 个但脚本没有剔除这组数据导致匹配错位。跑完脚本后建议把每张图的旋转向量和平移向量打印出来看一眼数值应该相对连续如果某张图的外参突然跳变那张图多半有角点误检。5. 避坑清单双目数据采集与标定的五个常见翻车现场下面这几条是复原压缩包方案时最容易遇到的问题每一条我都亲手踩过按现象、原因、解决方式写清楚照着排查能省下大量时间。坑 1标定板不平整检测正常但重投影误差一直在 0.8 像素以上下不去。现象是角点检测全部成功棋盘格也完整但单目标定 rms 始终偏高换光照、换标定板位置都无改善。原因是打印的棋盘格贴在普通纸板或软质塑料板上板子本身的弯曲让空间点不是严格共面角点坐标被系统性带偏。解决把棋盘格贴在平整的铝合金板或亚克力板上或者购买商品化的陶瓷/玻璃标定板。如果手头只有软板采集时尽量让板子处于自然平整状态不要用手捏着板边。坑 2左右时间戳不对齐动态场景视差图出现大面积撕裂。现象是静态标定时结果正常一旦采集环境里有人走动深度图上物体边缘出现横向错位。原因是软件触发采集没有真正同步左右帧差出一个或半个周期。解决一是采集标定数据时不要有移动物体全静态环境二是在匹配前加一个时间戳筛选左右时间戳差超过阈值就把这一对剔除三是预算允许的话换成硬件触发同步模组这是根治方案。坑 3棋盘格方格尺寸量错深度误差固定偏大或偏小。现象是深度图上每个点的值都乘以了一个固定比例远中近都一样不是边缘畸变那种不均匀误差。原因是square_size用错了比如标称 25mm 实际打印出来是 24.2mm。解决用游标卡尺量 5 到 10 个格子的总长除以格子数得到平均边长至少量三次取平均值。标定参数一旦保存后续更换打印板就必须重新量、重新标。坑 4立体校正后黑边和有效区域裁剪导致左右视野不对称。现象是 remap 之后左边图像的右侧被切掉一块而右图切的位置不同导致图像对无法匹配。原因是stereoRectify的缩放和裁剪逻辑默认以“两图交集区域”为有效区域如果你的左右相机安装角度偏差大ROI 会非常小。解决把alpha从 0.0 改成 0.5 到 1.0观察有效区域变化宁可保留一些黑色边缘让匹配算法只处理有效 ROI也不要强行裁剪到视野不对称。坑 5换了一台新相机或改了分辨率继续用旧标定参数深度全错。现象是最初的标定结果当时验证没问题换相机重新安装后不重新标定直接运行整个深度图发散。原因是内参矩阵里的 fx、fy、cx、cy 跟传感器尺寸和镜头焦距强相关换模组或改分辨率都会让它们失效。解决修改分辨率后必须重标定换了镜头后必须重标定。标定参数文件里一定要记录对应的分辨率和日期不然三个月后你自己都不知道这套参数是哪台设备上的。6. 验证与进阶让标定结果可量化、可复用并把它接进深度估计流程标定完成后的第一件事不是急着做立体匹配而是做三项验证。第一项是重投影误差复核——在刚才保存的valid_pairs上重新计算一次所有角点的重投影误差确认单目和双目的 rms 都在可接受范围。第二项是极线校正验证——随机选三张双目图像对运行remap后在左图上画出待测点用归一化互相关在右图同一行搜索对应点行差应控制在 1 像素以内。第三项是深度值实物验证——用 Q 矩阵把视差图转成深度图然后在 0.5 米、1 米、2 米三个距离各放一个已知尺寸的物体对比测量值和真实值。验证通过后可以把标定结果封装成一个独立的配置模块。我习惯的做法是把stereo_calib.npz文件和分辨率信息一起写进一个 YAML 配置程序启动时自动加载后续任何一个环节需要图像校正或深度映射都从这同一个接口取数据。这样可以避免标定参数被散落在各段代码里、改了一处漏了另一处的尴尬局面。再做深度估计时先remap校正左右图然后用 SGBM 或 BM 算视差最后用cv2.reprojectImageTo3D配合 Q 矩阵生成三维点云。这一步里最容易忽略的是对valid_pix_roi的处理视差图边缘区域的深度值不可信建议直接把 ROI 外的深度置为无效值。关于进阶方向我建议你做一个“自动采集标定数据”的小工具程序启动后自动检测棋盘格位置只有当板子完整出现在左右画面里并且角点置信度满足条件时才保存保存前自动检查当前姿态与已保存姿态的差异避免重复采集近似视角。这个工具做出来后标定效率会大幅提升。如果你需要更高精度可以研究一下cv2.fisheye模型普通针孔模型在广角镜头边缘畸变很大鱼眼模型能覆盖更大视场角但它的标定接口和参数含义跟普通模型差别不小建议看到了再专门去啃。我第一次做双目时为了省时间直接用了别人标好的参数文件跑深度估计结果视差图看着很平滑但物体距离全部偏了近三分之一。后来重新量了板子尺寸才发现对方的square_size用的是英寸我按毫米输入深度尺度全错了。从那以后我拿到任何标定压缩包的第一件事就是先检查描述文件里的单位、分辨率和采集日期再跑标定流程。这类问题没有玄学可言纯粹是仔细程度的问题但恰恰是最容易被忽视的。希望这些经验能帮你在双目视觉这条路上少走几段弯路。本文还有配套的精品资源点击获取

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号