# Stereo_DepthMap **Repository Path**: linClubs/Stereo_DepthMap ## Basic Information - **Project Name**: Stereo_DepthMap - **Description**: 获取左右相机的视差图,从而双目立体视觉获取深度图,python版本,相机标定工程;详情请阅读C++与python目录下README.md - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: https://gitee.com/linClubs/Stereo_DepthMap - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 4 - **Created**: 2022-07-19 - **Last Updated**: 2025-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 0 安装环境要求 ``` pip install -r requirements.txt ``` 结果说明:opencv中畸变系数的顺序是[k1,k2,p1,p2,k3] ros标定中畸变系数的顺序[k1, k2, p1, p2] k3=0(k3影响比较小) # 1 准备标定图像(拍摄棋盘格) ## (针对USB免驱动相机,其他相机看1.3小节,无相机看1.4小节) **拍照时候注意尽量把镜头的每个方格都覆盖到,最好拍摄的照片大部分为棋盘格信息** ## 1.1 准备标定板 这里只接受棋盘格标定,不介绍四月格和、圆形格(需要自行百度) 方法一:标定板可以直接从opencv官网下载:[标定板](https://docs.opencv.org/2.4/_downloads/pattern.png) 方法二:自己用ppt做一个 制作建议自己去附近广告公司用KT制作一个(图片发给广告公司老板),不用去淘宝买铝制(太贵), 直接用A4打印的太软,可以贴在平展的硬板上使用,建议使用KT板(可以双面制作不同大小的棋盘格) ## 1.2 获取单目图像 拍照时棋盘格画面尽量占满镜头画面 运行take_mono_img.py ``` python take_mono_img.py ``` 按left_i.jpg与(i从0开始计数)保存在该工程下./image/left目录 ## 1.3 获取双目图像 拍照时棋盘格画面尽量占满镜头画面 双目图像需要同时拍摄,对于可变基线的双目,固定好摄像头后就不要改变基线大小 运行take_stereo_img.py ``` python take_stereo_img.py ``` 按left_i.jpg与right_i.jpg命名(i从0开始计数)分别保存在该工程下./image/left与./image/right两个目录 # 1.4 其他型号相机 自己想办法获取了左右图像后(^\_^) 按left_i.jpg与right_i.jpg命名(i从0开始计数)分别放入该工程下./image/left与./image/right两个目录 如果是单目:按left_i.jpg命名(i从0开始计数)放入该工程下./image/left # 1.5 无相机 没有相机的童鞋 1 可以放弃做相机标定 (^\_^) 2 可以用该工程下的../test_image下的图片做验证。将test_image下图像拷贝到1.1和1.2小节要求的目录,做代码验证 3 test验证得到标定参数不能拿来直接使用,这参数只使用拍摄test里面图像的相机!!! # 2 单目标定 ## 2.1 修改mono_calibration.py配置参数 按自己棋盘格的实际情况修改,square_size棋盘格边长只影响双目标定的平移 ``` Checkerboard = (9,6) #棋盘格内角点数 square_size = (10,10) #棋盘格大小,单位mm ``` ## 2.2 运行 ``` python mono_calibration.py ``` 标定结果保存在./result/mono_calib.txt # 3 双目标定 ## 3.1 修改stereo_calibration.py配置参数 按自己棋盘格的实际情况修改,square_size棋盘格边长只影响双目标定的平移 ``` Checkerboard = (9,6) #棋盘格内角点数 square_size = (10,10) #棋盘格大小,单位mm ``` ## 3.2 运行 ``` python stereo_calibration.py ``` 标定结果保存在./result/stereo_calib.txt # 4 双目深度图获取 这里采用middlebury数据集,[下载地址](https://vision.middlebury.edu/stereo/data/scenes2003/) 运行代码时,本次采用数据集,原图像已经矫正过, 故dis.py中 stereoMatchSGBM(iml, imr, False)中的第三个参数用false ## 4.1 运行dis.py ~~~bash python dis.py ~~~ ## 4.2 深度可视化 深度图与视差图数值上成反比 这里展示深度图DepthMap.png ![](./result/DepthMap.png)