USB摄像头实时检测ArUco的python代码

本文给出一个用 Python 实现的实时检测 ArUco 标识的程序,分为基础版和升级版,在ubuntu下连接USB摄像头就能实现实时检测,VMware虚拟机和树莓派都实测可用。

1、基础版

当在Python中实时检测ArUco标识物时,可以使用opencv-python和opencv-contrib-python库来实现。opencv-python提供基本的计算机视觉功能,而opencv-contrib-python则提供了额外的功能,包括ArUco标识物的检测。

首先,确保已经安装了opencv-python和opencv-contrib-python库。可以使用以下命令进行安装:

pip install opencv-python opencv-contrib-python

然后,创建一个Python文件,并导入所需的库:

import cv2
import cv2.aruco as aruco

接下来,初始化摄像头对象以读取视频流,并设置相关参数:

cap = cv2.VideoCapture(0)
cap.set(3, 640)  # 设置视频宽度为640像素
cap.set(4, 480)  # 设置视频高度为480像素

然后,定义ArUco字典对象,以及其他检测参数:

# 创建ArUco字典,可根据检测的字典家族修改参数
aruco_dict = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)

# 设置ArUco标记的大小
marker_size = 5

# 创建ArUco参数
parameters = aruco.DetectorParameters()

在主循环中,通过读取每一帧图像,并调用ArUco检测函数,来实时检测ArUco标识物:

while True:
    # 读取视频流的一帧图像
    ret, frame = cap.read()

    # 将彩色图像转换为灰度图像
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 检测ArUco标识物
    corners, ids, rejected = aruco.detectMarkers(gray, aruco_dict, parameters=parameters)

    if len(corners) > 0:
        # 绘制检测到的ArUco标识物的边界框
        aruco.drawDetectedMarkers(frame, corners, ids)

    # 显示图像
    cv2.imshow('ArUco Detection', frame)

    # 按下ESC键退出程序
    if cv2.waitKey(1) == 27:
        break

# 释放摄像头对象和关闭窗口
cap.release()
cv2.destroyAllWindows()

相关解释:
在主循环中,首先读取视频流的一帧图像,然后将该图像转换为灰度图像。接下来,通过调用aruco.detectMarkers()函数来检测ArUco标识物。detectMarkers()函数返回检测到的标识物的角点坐标、标识物的ID,以及未被识别的标识物。
如果检测到了标识物,可以使用aruco.drawDetectedMarkers()函数将标识物的边界框绘制在图像上。最后,使用cv2.imshow()函数来显示图像。
在每一次循环中,通过调用cv2.waitKey(1)捕获键盘输入,如果按下了ESC键,就退出循环。
最后,释放摄像头对象和关闭窗口。

2、升级版

升级版的程序主要添加了以下功能:
1)在检测到标记时,输出相关的打印信息,包括检测到标记,并输出标记中心点与图像中心点的偏差
2)在未检测到标记时,输出相关的打印信息,指示未检测到标记
3)对图像进行放大,增加了可视性
4)添加了程序主循环的计时统计,包括总帧数、平均帧时间、最小帧时间和最大帧时间,最后打印统计结果
5)可自由调节分辨率,且分辨率实时显示在窗口上

效果图:
在这里插入图片描述

升级版程序下载链接:
USB摄像头实时检测ArUco的python代码树莓派ubuntu可用

(给位大佬走过路过行行好帮我刷点下载量吧呜呜呜~)

注:
在线Apriltag / ArUco标签生成器:
Online ArUco markers generator

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

pigheadcookie

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

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

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

打赏作者

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

抵扣说明:

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

余额充值