【2021】OpenCV OAK相机双目校准(Windows简易版)

编辑:OAK中国
来源:oakchina.cn
版权说明:转载请注明出处

前言

Hello,大家好,这里是OAK中国,我是助手君。

OAK相机在出厂时都是校准好的(除了分体式的OAK相机),不过如果你希望深度效果更好,也可以自己手动校准细调。

📺 视频教程 📺

OAK双目深度相机校准手把手教程

备注:文档教程中镜头fov参数更新了,与视频教程中填写的参数有差异,请以最新文档教程为准。

注意:请使用usb3.0连接oak设备安装环境!

1.安装环境

下载地址:
depthai download | SourceForge.net
双击下载好的安装包进入安装界面,如图1.1所示。选择简体中文,点击确定。
图1.1 选择语言
图1.1 选择语言

选择文件环境安装目录,如图1.2所示,默认安装在C:\Program Files(x86)目录下,这里不建议安装在C盘,为了后续使用方便,请点击浏览选择其他盘,演示安装在D:\workpage\目录下的,后续演示也会在该目录基础上完成,下一步。(这也是后续环境地址)
在这里插入图片描述

图1.2 选择安装文件夹

创建程序快捷方式,如图1.3所示,直接默认下一步即可。
在这里插入图片描述

图1.3 创建快捷方式

选择附加任务,如图1.4所示,默认全选。点下一步。
在这里插入图片描述

图1.4 附加任务选择

准备安装,如图1.5所示,确认之前选择的各个选项,检查没有问题,点安装。
在这里插入图片描述

图1.5 准备安装

等待完成,如图1.6所示,等待安装完成,知道出现安装完成提示界面,点击完成,完成整个环境安装流程。
在这里插入图片描述

图1.6 安装完成获取棋盘格校准图形

2.获取棋盘格校准图形

校准棋盘的平整度非常重要。不要使用曲面显示器,任何有“波浪”的校准目标。因此,如果你打印棋盘,请确保将棋盘固定在一个平坦的表面上,且没有任何波纹。棋盘图如图2.1所示,图片最下方有图片1:1后的尺寸,大方格为25mm,小方格为19mm。(以实际测量为准)
请一定将图片1:1打印或者监视器显示。通常,监视器显示校准目标更加容易/快捷。如果在监视器上显示,请以白色背景全屏显示图像。
在这里插入图片描述

图2.1 棋盘图

图片的获取方式,在我们环境程序包里面包含,在安装环境目录下(步骤1,图1.2)有提供,进入OAKEnvironment目录下,进入depthai文件下,如图2.2所示,图片位置用红框标出。
在这里插入图片描述

图2.2 棋盘图位置json文件配置(可选)

3.json文件配置(可选)

如果你的设备被指定了型号,且没有拆动,D:\workpage\OAKEnvironment\depthai\resources\boards文件下能够找到对应的名字,可以忽略(FFC结尾的除外,需要自己配置)。如果你不确定你的设备型号,那么下面的步骤可以帮到你。

在D:\workpage\OAKEnvironment\depthai\resources\boards文件下,新建.txt结尾的文件,将文件名设置成你的面板类型,注意名称英语要全部大写,名称内容不重要,主要是用来参数识别。如图3.1所示,将文件名设置成了DM1090FFC.txt。
在这里插入图片描述

图3.1 创建文件

打开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:左相机与彩色相机距离(厘米)

在这里插入图片描述

图3.2 编辑.txt文件

name和revision可以参考面板上的数据,分别代表的是型号和版本号。如图3.3所示,所以name可以是DM1090FFC,revision为R0M0E0。如果看不到面板信息也没关系,不是控制因素,可以填写这里参考name和revision。
在这里插入图片描述

图3.3 name和vision
left_fov_deg(左相机 HFOV 水平视角 ),rgb_fov_deg (彩色相机 HFOV 水平视角),直接在OAKChina网站对应的产品页面找到镜头HFOV参数,所以left_fov_deg后面填75,rgb_fov_deg后面填75。
在这里插入图片描述
图3.4 镜头参数

left_to_right_distance_cm(左右相机距离(厘米))。如图3.5所示,可以看到左右相机距离为53.04,所以left_to_right_distance_cm后面的数据为5.304。

在这里插入图片描述

图3.5 left_to_right_distance_cm(左右相机距离)

left_to_rgb_distance_cm(左相机与彩色相机距离(厘米))。如图3.6所示,可以看到左相机与彩色相机距离为26.45,所以left_to_rgb_distance_cm后面的数据为2.645。
在这里插入图片描述

图3.6 left_to_rgb_distance_cm(左相机与彩色相机距离)

如图3.7所示,由上面的数据可以将.txt写成这样。

在这里插入图片描述

图3.7 .txt文件

4.启动校准脚本

最后将.txt文件后缀改成.json,文件编写完毕。启动校准脚本
打开任意文件下的终端,使用命令:

cd /d %DEPTHAI_HOME%
cd depthai

如图4.1所示,直接进入到了环境目录。然后进入到depthai目录
在这里插入图片描述

图4.1 打开终端

用有效的条目替换占位符参数值

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。
    在这里插入图片描述

图4.2 大正方形

( 注意:不要让大正方形的值小于 2.3 cm)
如图4.3所示,测量白边内的小正方形,可以看到是 22.74 mm,所以 -ms 后的值为 2.274 cm。
在这里插入图片描述

图4.3 小正方形
所以棋盘格中大正方形尺寸为 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 是镜像操作,是为了更符合我们的习惯,方便了校准过程,为可选项,不需要可以不用。

可能存在的报错:
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

在这里插入图片描述

图4.4 报错信息放置棋盘格并捕获图像

5.放置棋盘格并捕获图像

启动校准程序,点击一下终端界面,按下 空格 开始流程。会出现左右相机和彩色相机,3个视频流,每个视频流里有一个多边框(不建议使用笔记本使用,目前测试的笔记本中,没有能打开3个视频流的型号,因为其屏幕大小不够)。

举起印刷好的棋盘格(或打开显示屏的图像),按照多边框方向提示方向和角度,将棋盘图对准后,按下 空格 捕获图像,不需要与多边框完全重合,但整个棋盘格需要在图像里面,主要是角度和位置,有 13 个必需的多边框位置。

在捕获了所有多边框位置的图像之后,校准图像处理步骤将开始。如果成功,会在最后弹出一个绿色背景的PASS界面,并给出校准分值。如图5.1所示,提示成功,并给出误差分数0.5674185,如果这个数值过大,会显示红色的失败界面,需要重新校准。
在这里插入图片描述

图5.1 成功校准测试深度

6.测试深度

查看深度流以确保正确校准摄像机,看一下各个数值是否正常。

python3 depthai_demo.py

# 如果电脑里有多个环境,请使用下面的代码
# ..\python\python.exe depthai_demo.py

参考资料

https://docs.oakchina.cn/en/latest/
https://www.oakchina.cn/selection-guide/


OAK中国
| OpenCV AI Kit在中国区的官方代理商和技术服务商
| 追踪AI技术和产品新动态

戳「+关注」获取最新资讯↗↗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值