AprilTags二维码的检测与应用

简介: AprilTags二维码的检测与应用

1 AprilTags介绍

1、AprilTags类似与二维码QR codes(Quick Response Code;全称为快速响应矩阵图码)

2、AprilTags可以应用于:

  • 相机标定
  • 目标大小估计
  • 测量相机到目标的距离
  • 3D 定位(3D positioning)
  • 机器人
  • SLAM
  • 自主导航(autonomous navigation)

如下图是一个AprilTag Tag36h11的一张图:

image.png

我们在相机标定的时候,还会用到很多AprilTags在一起组成的标定板,如下图(图片来源):

image.png

3、AprilTag family默认的是:Tag36h11,在AprilTags中有六个系列families:

  • Tag36h11
  • TagStandard41h12
  • TagStandard52h13
  • TagCircle21h7
  • TagCircle49h12
  • TagCustom48h12

2 使用python库包apriltag对AprilTag进行检测

2.1 python模块apriltag的安装

pip install apriltag

2.2 python模块apriltag的测试用例

测试用例(参考

import apriltag
import cv2
img = cv2.imread('apriltag_foto.jpg'.cv2.IMREAD_GRAYSCALE)
detector = apriltag.Detector()
result = detector.detect(img)

返回结果如下:

[DetectionBase(tag_family='tag36h11', tag_id=2, hamming=0, goodness=0.0, decision_margin=98.58241271972656, homography=array([[ -1.41302664e-01,   1.08428082e+00,   1.67512900e+01],
   [ -8.75899366e-01,   1.50245469e-01,   1.70532040e+00],
   [ -4.89183533e-04,   2.12210247e-03,   6.02052342e-02]]), center=array([ 278.23643912,   28.32511859]), corners=array([[ 269.8939209 ,   41.50381088],
   [ 269.57183838,   11.79248142],
   [ 286.1383667 ,   15.84242821],
   [ 286.18066406,   43.48323059]])),
DetectionBase(tag_family='tag36h11', ... etc

结果中是用collections.OrderedDict存储成字典类型的数据

3 AprilTags二维码检测,以及绘制检测框

1、代码

import cv2
import apriltag


image = cv2.imread('apriltags_36h11.png')

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 定义AprilTag检测选项,然后检测AprilTags
print(f"[INFO] detection AprilTags ...")
options = apriltag.DetectorOptions(families="tag36h11")
detector = apriltag.Detector(options)
results = detector.detect(gray)
print(results)
print(f"[INFO] {len(results)} total AprilTags detected")

for r in results:
    # extract the bounding box (x, y)-coordinates for the AprilTag
    # and convert each of the (x, y)-coordinate pairs to integers
    (ptA, ptB, ptC, ptD) = r.corners
    ptB = (int(ptB[0]), int(ptB[1]))
    ptC = (int(ptC[0]), int(ptC[1]))
    ptD = (int(ptD[0]), int(ptD[1]))
    ptA = (int(ptA[0]), int(ptA[1]))
    # 绘制检测到的AprilTag的框
    cv2.line(image, ptA, ptB, (0, 255, 0), 2, lineType=cv2.LINE_AA)
    cv2.line(image, ptB, ptC, (0, 255, 0), 2, lineType=cv2.LINE_AA)
    cv2.line(image, ptC, ptD, (0, 255, 0), 2, lineType=cv2.LINE_AA)
    cv2.line(image, ptD, ptA, (0, 255, 0), 2, lineType=cv2.LINE_AA)
    # 绘制 AprilTag 的中心坐标
    (cX, cY) = (int(r.center[0]), int(r.center[1]))
    cv2.circle(image, (cX, cY), 5, (0, 0, 255), -1)
    # draw the tag family on the image
    tagFamily = r.tag_family.decode("utf-8")
    cv2.putText(image, tagFamily, (ptA[0], ptA[1] - 15),
                cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
    print("[INFO] tag family: {}".format(tagFamily))

cv2.imshow("Image", image)
cv2.waitKey(0)

2、检测结果如下图:

image.png

目录
相关文章
|
8月前
|
自然语言处理
二维码会被用完吗?
【6月更文挑战第16天】二维码会被用完吗?
|
9月前
|
搜索推荐 Python
玩转二维码世界:定制专属神奇二维码
这篇文章介绍了如何使用Python的amzqr模块创建定制化的二维码。amzqr模块可生成包含文字或链接的二维码,并能结合图片制作彩色二维码。虽然不支持中文,但能制作出包含网站链接、个人头像或企业标志的二维码,增加个性化元素。文章还提到了zxing库用于读取二维码中的数据。示例代码展示了如何生成和解析二维码,以及可用的参数选项。由于平台限制,二维码图片未能直接显示,需参考原文查看。
玩转二维码世界:定制专属神奇二维码
|
9月前
|
小程序 JavaScript
微信小程序长按识别图片二维码功能
微信小程序长按识别图片二维码功能
747 0
|
移动开发 前端开发 JavaScript
纯web端实现二维码识别
最近公司的业务场景中有个生成二维码和识别二维码的需求。生成二维码之前有做过,选用的 qrcode.js这个前端库,操作比较简单。这里不再赘述。 刚开始看到二维识别这个需求觉得很简单,以为有相应的前端库直接用就行了。但当真正开始写功能时,发现二维识别会涉及到很多其他的功能。废话不再多说,还是来看看如何实现的吧。
|
9月前
|
存储 数据挖掘
[Halcon&识别] 二维码识别
[Halcon&识别] 二维码识别
331 0
|
算法 小程序 Java
图像中二维码的检测和定位
图像中二维码的检测和定位
1328 0
图像中二维码的检测和定位
|
Java Maven
让一句话生成一张二维码图片
让一句话生成一张二维码图片
|
移动开发 前端开发 JavaScript
网页长按保存及识别二维码
网页长按保存及识别二维码
330 0
网页长按保存及识别二维码
|
开发工具 计算机视觉
配置zbar识别二维码(转载)
原文地址:http://blog.csdn.net/dcrmg/article/details/52108258  二维码解码器Zbar+VS2012开发环境配置 Zbar条码解码器是一个开源的二维码(包括条形码)解码器,可以识别来至于视频流,图像文件、手持扫码器和视频设备(如摄像头)等二维码识别,支持EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, QR Code(二维码)等常用编码方式的条形码/二维码。
2568 0
|
Java
二维码合图
二维码合图,是为二维码套上一个好看的模版底图,再配上一定的文案,这种图片常见于线下地推业务中,例如扫码领鸡蛋等场景~ 下面是如何得到这个图片生成二维码二维码的本质是一个url,通过二维码插件szxing就可以得到一个二维码pom文件<dependency>     <groupId>com.taobao.xcode.szxing</groupId>     &l
319 1
二维码合图