【秣厉科技】LabVIEW工具包——OpenCV 教程(10):Aruco 码


前言

  1. 需要下载安装OpenCV工具包的朋友,请前往 此处
  2. 系统要求:Windows系统,LabVIEW>=2018,兼容32位和64位。

Aruco 二维码

Aruco ,是一种用二进制编码生成的正方形黑白图案。其存储的内容不多,仅一个ID号,通常作为应用场景中的标志点。Aruco 在增强现实(AR)、机器人导航、相机校准、物体跟踪等方面具有较广泛的应用。

OpenCV 工具包中,objdetect 模块下的子目录 aruco 专门用于生成和识别 Aruco 二维码。

在这里插入图片描述


1. 生成 Aruco

1.1 生成孤立 Aruco

aruco::Dictionary 这个类的作用,是定义一套 “编码字典” ,作为后续生成和识别 Aruco 码的基准。同时,它也带有生成图像的 API,可以生成一个简单的 Aruco 码。

在这里插入图片描述

  • 使用预设的 “编码字典” 生成一个单独的 Aruco 码,流程如下:

在这里插入图片描述


1.2 生成 Aruco Borad

多个 Aruco 按照一定规则排列在一起,就组成了 Aruco Board。

使用 board 子目录下的 API 实现 Aruco Board 的生成。一共有三种 borad 类: Borad,CharucoBoard,GridBoard。

在这里插入图片描述

  • Board 类几乎没有规则,可以在任意位置生成任意大小的 Aruco 码,组合成一个 Aruco Board;
  • Board::new 方法,以输入的 Dictionary 作为 “编码字典”,分别在objPoints指定的位置生成代表 ids 的Aruco码;
  • 注意,Dictionary 对象不能提前销毁(要在使用Dictionary作为输入的其他对象之后销毁),下同。

在这里插入图片描述


  • CharucoBoard 类生成的图案类似 “棋盘格”,黑块与 Aruco 码交错排列。

在这里插入图片描述


  • GridBorad 类生成的是均匀排列的网格,每一块都是一个 Aruco 码。

在这里插入图片描述


2. 识别 Aruco

2.1 识别一个或多个 Aruco 码

  • 生成一个 Aruco 码,并使用 ArucoDetector 类来识别,如下图。
  • copyMakeBorder 这个函数位于 core 选板,作用是在图像周围填充一层边框。由于被识别的 Aruco 码外围必须有一些留白作为背景,否则会识别失败,所以这里使用copyMakeBorder来扩充白色边界。
  • 同样,Dictionary 不能在 ArucoDetector 之前销毁。

在这里插入图片描述

在这里插入图片描述

  • 如下图,ArucoDetector::new 方法还可以设置识别参数:DetectorParameters 和 RefineParameters,如不连接则使用默认参数;
  • DetectorParameters 和 RefineParameters 也是两个类,虽然选板中它们只有一个new和一个delete,但其实大量参数设置隐藏在“属性节点”中。

在这里插入图片描述

  • 识别多个 Aruco 码,同样使用 ArucoDetector 类。下图生成一个 GridBoard 图片,然后用 ArucoDetector 识别。
  • 可视化过程,使用 aruco 选板下的 drawDetectedMarkers 更方便。绘图之前使用 cvtColor 将原本的单通道图像变成3通道,以便能绘制出有颜色的标记。

在这里插入图片描述

在这里插入图片描述


2.2 识别 CharucoBorad 规则的 Aruco 组合

  • 使用 CharucoBoard 生成 “棋盘格”,再用 CharucoDetector 进行识别,如下图;
  • CharucoDetector::new 方法可以设置参数:CharucoParameters,DetectorParameters 和 RefineParameters,如不连接则使用默认参数;
  • 可视化过程,使用 aruco 选板下的 drawDetectedCornersCharuco 更方便。绘图之前使用 cvtColor 将原本的单通道图像变成3通道,以便能绘制出有颜色的标记。

在这里插入图片描述

在这里插入图片描述


总结

  1. 本系列博文作为LabVIEW工具包—OpenCV的教程,将以专栏的形式陆续发布和更新。
  2. 对工具包感兴趣的朋友,欢迎下载试用:秣厉科技 - LabVIEW工具包 - OpenCV
  3. 各位看官有什么想法、建议、吐槽、批评,或新奇的需求,也欢迎留言讨论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秣厉科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值