基于ARUCO标记的实时距离计算

本文介绍了ARUCO标记的概念,包括其特点和在工业中的应用,如姿态估计和距离计算。通过Python和OpenCV库,详细阐述了如何生成、检测ARUCO标记,并展示了如何利用这些标记进行实时距离测量。最后,提到了计算两个标记之间距离的数学原理和步骤。
摘要由CSDN通过智能技术生成

本周我遇到了一个非常热门的话题——增强现实,但我们需要先看看ARUCO标记是什么……

ArUco 标记 .. 它们是什么?

ArUco 标记类似于二维码,区别在于二维码存储的信息比 ArUco 标记多得多,因此很难用于我们将要做的事情。

它是一个由黑色边框组成的二进制矩阵,它是一种合成标记,用于在图像或视频中立即定位。

这就是 ArUco Marker 的样子:

现在,因为它是二进制的并且包含某种信息,我们需要有一些变化,所以这些标记有两个独特的属性——ID 和类型

现在标记的 id 取决于它是什么类型,让我们了解一下这是一些细节:在上面的标记中,你会看到,四周都被填充了,在标记中你可以看到一个行(去除填充后)可以容纳 6 个白框,所以这是一个 6X6 标记。

现在你无法猜测标记的类型。类型是预定义的,在这里有点小问题,cv2 中共有 25 种类型(或字典)的标记,每个字典包含相同数量的位或块和固定数量的标记(50,100,250 或 1000)。

上面附加的标记图像是 DICT_6X6_250 的 id 23。

所以,这里的类型是 DICT_6X6_250,id 是 23。(注意这里的 id 不能超过 250,因为字典中只有 250 个可用的标记)。

工业用途

用于姿势估计、机器人自动化、2D 投影、增强现实等等!

当然,今天我们将学习如何使用它们进行距离计算。

在使用它们之前让我们看看它们是如何生成的:

在 Python 中,你可以在 cv2.aruco.drawMarker() 函数的帮助下生成它们,让我们看看它的实际效果!

所需的包是:

import cv2
import numpy as np
import argparse
import sys
import os

现在,你需要标记的是 id 和类型,因此让我们将它们作为参数

ap.add_argument("-i", "--id", type=int, required=True,
                help="id of the aruco marker to be generated")
ap.add_argument("-t", "--type", type=str,
                default="DICT_ARUCO_ORIGINAL", help="type of ARUCO marker")

现在,为了生成这些标记,我们创建了一个ArUco字典。

ARUCO_DICT = {
    "DICT_4X4_50": cv2.aruco.DICT_4X4_50,
    "DICT_4X4_100": cv2.aruco.DICT_4X4_100,
    "DICT_4X4_250": cv2.aruco.DICT_4X4_250,
    "DICT_4X4_1000": cv2.aruco.DICT_4X4_1000,
    "DICT_5X5_50": cv2.aruco.DICT_5X5_50,
    "DICT_5X5_100": cv2.aruco.DICT_5X5_100,
    "DICT_5X5_250": cv2.aruco.DICT_5X5_250,
    "DICT_5X5_1000": cv2.aruco.DICT_5X5_1000,
    "DICT_6X6_50": cv2.aruco.DICT_6X6_50,
    "DICT_6X6_100": cv2.aruco.DICT_6X6_100,
    "DICT_6X6_250": cv2.aruco.DICT_6X6_250,
    "DICT_6X6_1000": cv2.aruco.DICT_6X6_1000,
    "DICT_7X7_50": cv2.aruco.DICT_7X7_50,
    "DICT_7X7_100": cv2.aruco.DICT_7X7_100,
    "DICT_7X7_250": cv2.aruco.DICT_7X7_250,
    "DICT_7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值