【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 视觉应用的快速开发设计提供了参考。

相关推荐
东坡肘子7 分钟前
SPI 加入 Apple,Swift 迈向自举 -- 肘子的 Swift 周报 #142
人工智能·swiftui·swift
唐青枫9 分钟前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux
小和尚同志8 小时前
AI 自动化测试探索(二):Chrome-devtools MCP
人工智能·e2e·aigc
花酒锄作田9 小时前
Pydantic校验配置文件
python
hboot9 小时前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络
冬奇Lab10 小时前
Workflow 系列(02):设计范式——四层架构、三种 Context 传递模式与确认门设计
人工智能·agent·工作流引擎
冬奇Lab11 小时前
每日一个开源项目(第145篇):Trellis - 把项目记忆、规范和任务上下文持久化进代码仓库
人工智能·开源·资讯
有道AI情报局11 小时前
Harness即产品
人工智能·agent
罗西的思考12 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
IT_陈寒13 小时前
SpringBoot自动配置的坑,我的API突然就404了
前端·人工智能·后端