5分钟实战:YOLOv11+双目摄像头实现高精度实时测距(附避坑指南)
第一次尝试用双目摄像头测距时,我盯着屏幕上跳动的深度数据发愣——明明标定流程完全正确,实际测距误差却超过30%。直到发现OpenCV的stereoRectify函数对图像分辨率有隐藏要求,才意识到问题所在。本文将分享如何绕过这些"隐形陷阱",用YOLOv11 ONNX模型快速搭建可落地的测距系统。
1. 环境配置与依赖安装
在Ubuntu 20.04和Windows 11双平台实测中,Python 3.8展现出最佳的库兼容性。新建conda环境避免依赖冲突:
bash复制conda create -n yolov11_3d python=3.8 -y
conda activate yolov11_3d
核心依赖库的版本锁定至关重要,不同版本的OpenCV处理双目图像时可能产生截然不同的结果:
python复制pip install opencv-contrib-python==4.5.5.64 # 必须包含contrib模块
pip install onnxruntime-gpu==1.12.0 # GPU加速版需CUDA 11.6+
pip install numpy==1.21.6 # 避免与ONNX Runtime的广播机制冲突
注意:若使用树莓派等ARM设备,需从源码编译OpenCV以启用SGBM加速,预编译版本可能缺失关键功能。
验证环境是否就绪:
python复制import cv2
print(cv2.getBuildInformation()) # 检查是否包含"Non-free algorithms: YES"
assert cv2.__version__ == "4.5.5" # 版本必须严格匹配
常见报错解决方案:
ImportError: libGL.so.1:在Linux中执行sudo apt install libgl1-mesa-glxDLL load failed:重装VC++ 2019运行库CUDA out of memory:在onnxruntime初始化时设置providers=['CUDAExecutionProvider']改为CPU模式
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 双目标定与立体校正实战
标定板的选择直接影响参数精度。推荐使用非对称圆网格标定板(如7x9棋盘格),其角点检测稳定性比传统棋盘格高40%:
python复制criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
objp = np.zeros((6*8,3), np.float32
