中国 · 南京 · 栖霞区紫东路2号紫东国际创意园B3-2幢5F
+86-18994094214 (仅工作日:8:30~17:30)
contact@oakchina.cn

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

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

注意:1.请使用usb3.0连接oak设备安装环境!2.文档教程中镜头fov参数更新了,与视频教程中填写的参数有差异,请以最新文档教程为准。

1.安装环境  

下载地址:depthai download | SourceForge.net

双击下载好的安装包进入安装界面,如图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打印或者监视器显示。通常,监视器显示校准目标更加容易/快捷。如果在监视器上显示,请以白色背景全屏显示图像。

下载棋盘格PDF文件

图2.1 棋盘图

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

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

3.json文件配置(可选)  

注意!下面的json文件都是都是旧版本的,最新版本的文件请下载文件,新校准步骤请参考文件里的README.md

如果你的设备被指定了型号,且没有拆动,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 是镜像操作,是为了更符合我们的习惯,方便了校准过程,为可选项,不需要可以不用。

 可能存在的报错:

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
图4.4 报错信息放置棋盘格并捕获图像

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
图4.5 报错找不到 cv2.aruco

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

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

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

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

图5.1 成功校准测试深度

现在生成的是<Device Mx ID>.json,而不是depthai.calib。

6.测试深度  

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

python3 depthai_demo.py

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

Tags:

索引