USB摄像头实时检测Apriltag的python代码树莓派可用
本文给出一个用 Python 实现的实时检测 apriltag 标识的程序,分为基础版和升级版,在ubuntu下连接USB摄像头就能实现实时检测,VMware虚拟机和树莓派都实测可用。
本文给出一个用 Python 实现的实时检测 apriltag 标识的程序,分为基础版和升级版,在ubuntu下连接USB摄像头就能实现实时检测,VMware虚拟机和树莓派都实测可用。
1、基础版
import cv2
import apriltag
# 创建 apriltag 检测器
options = apriltag.DetectorOptions(families='tagStandard41h12')
detector = apriltag.Detector(options)
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取当前帧
ret, frame = cap.read()
# 将当前帧转化为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测 apriltag 图像
detections = detector.detect(gray)
# 绘制检测框
for detection in detections:
pts = detection.corners
pts = pts.astype(int)
cv2.polylines(frame, [pts], True, (0, 255, 0), 2)
# 显示帧
cv2.imshow('frame', frame)
# 按下 'q' 键退出程序
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
相关解释:
apriltag 库是一个基于 C++ 实现的标识检测算法库,可以实现在常规摄像头下直接检测标记。在 Python 中使用 apriltag 库需要将其封装为 Python 库,使用 apriltag.py 提供的接口。
在程序中,首先导入了 cv2 和 apriltag 库,然后创建了一个 DetectorOptions 对象,指定了所使用的标识族。然后创建一个 Detector 对象,后面会使用该对象中的方法来检测图像。
在程序的主循环中,先读取当前帧,然后将其转化为灰度图像。接着使用 detector.detect() 方法,检测图像中的标识,返回检测到的标记的位置和角度信息。最后绘制框出检测到的标记区域,并将当前帧显示出来。如果用户按下 ‘q’ 键,则退出程序,并释放相关资源。
在这个程序中,使用了 cv2 库进行图像处理和显示,使用了 apriltag 库进行标识检测。程序首先需要使用 pip 安装 cv2 库和 apriltag 库。若是python3则用pip3 install。
2、升级版
升级版的程序主要添加了以下功能:
1)在检测到标记时,输出相关的打印信息,包括检测到标记,并输出标记中心点与图像中心点的偏差
2)在未检测到标记时,输出相关的打印信息,指示未检测到标记
3)对图像进行放大,增加了可视性
4)添加了程序主循环的计时统计,包括总帧数、平均帧时间、最小帧时间和最大帧时间,最后打印统计结果
效果图:
升级版程序下载链接:
USB摄像头实时检测Apriltag的python代码树莓派ubuntu可用
Apriltag标准图片包下载:
Apriltag标准图片包
在线Apriltag / ArUco标签生成器:
https://chev.me/arucogen/
更多推荐
所有评论(0)