【Arduino UNO Q】 边缘 AI 视觉部署方案:二维码识别

【Arduino UNO Q】 边缘 AI 视觉部署方案:二维码识别

本文介绍了 Arduino UNO Q 开发板结合 OpenCV 和 QR Code 检测器实现二维码识别的项目设计。

项目介绍

Arduino UNO Q 开发板结合 OpenCV 与 QR Code 检测器实现快速二维码识别。

  • 准备工作:硬件连接、软件更新等;
  • 环境搭建:安装 OpenCV 库、所需软件包等;
  • QR Code:使用 OpenCV 和 QR Code 检测器模块实现二维码识别;

准备工作

包括硬件连接、系统安装、软件更新等。

详见:Arduino UNO Q 介绍、环境搭建、工程测试 .

硬件连接

这里采用 SSH 远程控制,使用 Type-C 数据线供电并 WiFi 联网即可。

软件更新

更新软件包

bash 复制代码
sudo apt update
sudo apt upgrade

环境搭建

  • 安装 OpenCV 和 opencv-data 软件包;

    bash 复制代码
    sudo apt install python3-opencv
    sudo apt install opencv-data
  • 执行如下指令验证

bash 复制代码
python3 -c "import cv2,sys;print(cv2.__version__,sys.version)"

终端打印 opencv 版本号。

QR Code

使用 OpenCV 自带的 QR Code 检测器,加载目标图片并弹窗显示检测结果。

流程图

开始
解析参数
读取图片
检测二维码
打印识别内容
画定位框
弹窗显示
按键退出
结束

代码

终端执行 touch qr_code.py 新建程序文件,添加如下代码

python 复制代码
#!/usr/bin/env python3
import cv2
import argparse

# input image path
parser = argparse.ArgumentParser()
parser.add_argument('--image_path', default='./img/dianyuan.jpg', help='输入指令 python3 qr_code.py --image_path ./img/dianyuan.jpg')
args = parser.parse_args()

img = cv2.imread(args.image_path)
if img is None:
    exit('目标不存在,请检查图片路径')

qr = cv2.QRCodeDetector()
data, bbox, _ = qr.detectAndDecode(img)
print(data or '未识别到二维码')

if data and bbox is not None:
    # 画绿色定位框
    pts = bbox[0].astype(int)
    cv2.polylines(img, [pts], True, (0, 255, 0), 2)

    # 标签区域:左上方,左对齐
    x0, y0 = pts[0][0], pts[0][1]
    text = data
    font = cv2.FONT_HERSHEY_SIMPLEX
    scale = 0.8
    thick = 1
    (tw, th), _ = cv2.getTextSize(text, font, scale, thick)

    # 绿色填充条
    bg_top = y0 - th - 8
    bg_bot = y0 - 2
    bg_left = x0
    bg_right = x0 + tw + 4
    cv2.rectangle(img, (bg_left, bg_top), (bg_right, bg_bot), (0, 255, 0), cv2.FILLED)
    # 黑色文字
    cv2.putText(img, text, (x0 + 2, y0 - 4), font, scale, (0, 0, 0), thick, cv2.LINE_AA)
else:
    cv2.putText(img, 'No QR found', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 2)

cv2.namedWindow("QR Code", cv2.WINDOW_NORMAL)    # 可缩放窗口
cv2.imshow('QR Code', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

保存代码。

效果

  • 终端运行指令 python3 qr_code.py --image_path ./img/dianyuan.jpg ,打印结果

  • 弹窗显示结果,按任意键关闭窗口;

    效果如下

总结

本文介绍了 Arduino UNO Q 开发板结合 OpenCV 与 QR Code 检测器实现二维码识别,包括OpenCV 部署、流程图、关键代码和工程测试,为相关产品在边缘 AI 视觉应用的快速开发设计提供了参考。

相关推荐
云烟成雨TD10 小时前
Spring AI 1.x 系列【50】可观测性:接入 Prometheus + Grafana
人工智能·spring·prometheus
Albart57510 小时前
Python 实战教程:用 30 分钟学会解决真实问题
开发语言·python
2301_7736436211 小时前
ceph池
开发语言·ceph·python
wuminyu11 小时前
Java锁机制之park和unpark源码剖析
java·linux·c语言·jvm·c++
梦梦代码精11 小时前
为什么这个开源的AI平台会火?有点东西。。。
人工智能·算法·机器学习·docker·开源
大模型真好玩11 小时前
智能体从入门到精通:6个必学GitHub开源项目
人工智能·agent·deepseek
皆圥忈11 小时前
文件描述符与重定向
linux
极客笔记Jack11 小时前
Scanpy AnnData 对象深度解析:高效操作数据结构的10个技巧
python
实心儿儿11 小时前
Linux —— 线程池(2)
linux