双目立体视觉测距,包括畸变矫正、立体校正、视差计算和三维重建。首先,代码从 stereoconfig 读取相机标定参数,包括内外参、畸变系数等,并使用 cv2.stereoRectify() 进行立体校正,确保左右相机的图像对齐。接着,利用 SGBM(Semi-Global Block Matching) 计算视差图,并通过 WLS(加权最小二乘滤波) 进行优化,使视差图更加平滑,减少噪声。然后,使用 cv2.reprojectImageTo3D() 将视差图转换为 3D 坐标,获取每个像素点的真实三维位置。最终效果如下所示:

程序提供两种模式:图片模式(imagemode)用于处理静态图像,相机模式(cameramode)用于实时获取双目相机的视频流,并进行测距。用户可以点击深度图像查看对应点的 3D 坐标,最终可视化校正后的图像、视差图及深度图,为立体视觉应用(如机器人、AR/VR 及自动驾驶)提供了基础。代码仅仅依赖 numpy和opencv库,安装命令如下:
pip install numpy opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
如果要标定自己相机参数,可参考:https://blog.csdn.net/weixin_50174671/article/details/146220900?spm=1011.2124.3001.6209 标定好参数后,在stereoconfig.py中替换自己的相机参数,然后在 mian.py中填入自己图片的路径(如果是相机模式可以不填),运行代码,即可