【2021】OAK相机双目校准(Windows简易版)
注意:1.请使用usb3.0连接oak设备安装环境!2.文档教程中镜头fov参数更新了,与视频教程中填写的参数有差异,请以最新文档教程为准。
1.安装环境
下载地址:depthai download | SourceForge.net
双击下载好的安装包进入安装界面,如图1.1所示。选择简体中文,点击确定。
选择文件环境安装目录,如图1.2所示,默认安装在C:\Program Files(x86)目录下,这里不建议安装在C盘,为了后续使用方便,请点击浏览选择其他盘,演示安装在D:\workpage\目录下的,后续演示也会在该目录基础上完成,下一步。(这也是后续环境地址)
创建程序快捷方式,如图1.3所示,直接默认下一步即可。
选择附加任务,如图1.4所示,默认全选。点下一步。
准备安装,如图1.5所示,确认之前选择的各个选项,检查没有问题,点安装。
等待完成,如图1.6所示,等待安装完成,知道出现安装完成提示界面,点击完成,完成整个环境安装流程。
2.获取棋盘格校准图形
校准棋盘的平整度非常重要。不要使用曲面显示器,任何有“波浪”的校准目标。因此,如果你打印棋盘,请确保将棋盘固定在一个平坦的表面上,且没有任何波纹。棋盘图如图2.1所示,图片最下方有图片1:1后的尺寸,大方格为25mm,小方格为19mm。(以实际测量为准)
请一定将图片1:1打印或者监视器显示。通常,监视器显示校准目标更加容易/快捷。如果在监视器上显示,请以白色背景全屏显示图像。
下载棋盘格PDF文件
图片的获取方式,在我们环境程序包里面包含,在安装环境目录下(步骤1,图1.2)有提供,进入OAKEnvironment目录下,进入depthai文件下,如图2.2所示,图片位置用红框标出。
3.json文件配置(可选)
注意!下面的json文件都是都是旧版本的,最新版本的文件请下载文件,新校准步骤请参考文件里的README.md |
如果你的设备被指定了型号,且没有拆动,D:\workpage\OAKEnvironment\depthai\resources\boards文件下能够找到对应的名字,可以忽略(FFC结尾的除外,需要自己配置)。如果你不确定你的设备型号,那么下面的步骤可以帮到你。
在D:\workpage\OAKEnvironment\depthai\resources\boards文件下,新建.txt结尾的文件,将文件名设置成你的面板类型,注意名称英语要全部大写,名称内容不重要,主要是用来参数识别。如图3.1所示,将文件名设置成了DM1090FFC.txt。
打开DM1090FFC.txt文件夹,将下面格式复制进去,如图3.2所示。这里需要填name、revision、left_fov_deg、rgb_fov_deg、left_to_right_distance_cm、left_to_rgb_distance_cm6个参数。
{
"board_config":
{
"name": "DM1090FFC",
"revision": "R0M0E0",
"left_fov_deg": 75,
"rgb_fov_deg": 65,
"left_to_right_distance_cm": 5.3,
"left_to_rgb_distance_cm": 2.6
}
}
- swap_left_and_right_cameras:左右相机切换,设置为 true 或 false ,详细信息看一下图4.4的部分
- left_fov_deg :左相机 HFOV 水平视角
- rgb_fov_deg :彩色相机 HFOV 水平视角
- left_to_right_distance_cm : 左右相机距离(厘米)
- left_to_rgb_distance_cm :左相机与彩色相机距离(厘米)
name和revision可以参考面板上的数据,分别代表的是型号和版本号。如图3.3所示,所以name可以是DM1090FFC,revision为R0M0E0。如果看不到面板信息也没关系,不是控制因素,可以填写这里参考name和revision。
left_fov_deg(左相机 HFOV 水平视角 ),rgb_fov_deg (彩色相机 HFOV 水平视角),直接在OAKChina网站对应的产品页面找到镜头HFOV参数,所以left_fov_deg后面填75,rgb_fov_deg后面填75。
left_to_right_distance_cm(左右相机距离(厘米))。如图3.5所示,可以看到左右相机距离为53.04,所以left_to_right_distance_cm后面的数据为5.304。
left_to_rgb_distance_cm(左相机与彩色相机距离(厘米))。如图3.6所示,可以看到左相机与彩色相机距离为26.45,所以left_to_rgb_distance_cm后面的数据为2.645。
如图3.7所示,由上面的数据可以将.txt写成这样。
4.启动校准脚本
最后将.txt文件后缀改成.json,文件编写完毕。启动校准脚本
打开任意文件下的终端,使用命令:
cd /d %DEPTHAI_HOME%
cd depthai
如图4.1所示,直接进入到了环境目录。然后进入到depthai目录
用有效的条目替换占位符参数值
python3 calibrate.py -s [SQUARE_SIZE_IN_CM] -ms -brd [BOARD] -db
相关参数:
- -s SQUARE_SIZE_IN_CM, –square_size_cm SQUARE_SIZE_IN_CM: 以厘米为单位测量印刷棋盘格的大正方形大小。
- -ms MARKER_SIZE_IN_CM, –markerSizeCm MARKER_SIZE_IN_CM : 以厘米为单位测量印刷棋盘格的小正方形大小
- -brd BOARD, –board BOARD: D:\work page\depthai\resources\boards 中的面板名称(不区分大小写)
如图4.2所示,测量纯黑色的大正方形,可以看到是 29.53 mm,所以 -s 后的值为 2.953 cm。
( 注意:不要让大正方形的值小于 2.3 cm)
如图4.3所示,测量白边内的小正方形,可以看到是 22.74 mm,所以 -ms 后的值为 2.274 cm。
所以棋盘格中大正方形尺寸为 2.9 厘米,小正方形尺寸为 2.3厘米,如果用的面板是BW1098OBC(一定要确定D:\work page\depthai\resources\boards目录下是否有这个面板名称,没有的话需要执行步骤3),那么运行代码如下所示:
python3 calibrate.py -s 2.953 -ms 2.274 -brd bw1098obc -ih
# 如果电脑里有多个环境,请使用下面的代码
# ..\python\python.exe calibrate.py -s 2.9 -ms 2.3 -brd bw1098obc -ih
注意:其中最后- ih 是镜像操作,是为了更符合我们的习惯,方便了校准过程,为可选项,不需要可以不用。
可能存在的报错:
1.Calibration failed, Camera Might be held upside down. start again!! / Capture failed, Swap the camera’s
如图4.4所示,如果出现此类报错。方法:添加 -slr /–swapLR 参数, 互换左右摄像头端口。
python3 calibrate.py -s 2.9 -ms 2.3 -brd bw1098obc -ih
# 如果电脑里有多个环境,请使用下面的代码
# ..\python\python.exe calibrate.py -s 2.9 -ms 2.3 -brd bw1098obc -ih -slr
2.ModuleNotFoundError: No module named ‘cv2.aruco‘
如果找不到 cv2.aruco,请首先确保未安装 opencv-python 。
为此,你可以使用:
pip uninstall opencv-python
然后安装:
pip install opencv-contrib-python
我们正在卸载 opencv-python,因为安装两个 opencv 的包裹会相互矛盾,并且不会让另一个安装。
如果上面的命令不起作用,可以尝试以下命令:
python -m pip uninstall opencv-python opencv-contrib-python
python -m pip install opencv-contrib-python
5.放置棋盘格并捕获图像
启动校准程序,点击一下终端界面,按下 空格 开始流程。会出现左右相机和彩色相机,3个视频流,每个视频流里有一个多边框(不建议使用笔记本使用,目前测试的笔记本中,没有能打开3个视频流的型号,因为其屏幕大小不够)。
举起印刷好的棋盘格(或打开显示屏的图像),按照多边框方向提示方向和角度,将棋盘图对准后,按下 空格 捕获图像,不需要与多边框完全重合,但整个棋盘格需要在图像里面,主要是角度和位置,有 13 个必需的多边框位置。
在捕获了所有多边框位置的图像之后,校准图像处理步骤将开始。如果成功,会在最后弹出一个绿色背景的PASS界面,并给出校准分值。如图5.1所示,提示成功,并给出误差分数0.5674185,如果这个数值过大,会显示红色的失败界面,需要重新校准。
现在生成的是<Device Mx ID>.json,而不是depthai.calib。
6.测试深度
查看深度流以确保正确校准摄像机,看一下各个数值是否正常。
python3 depthai_demo.py
# 如果电脑里有多个环境,请使用下面的代码
# ..\python\python.exe depthai_demo.py