• 2
    回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【你购物我买单】Arduino UNO Q 边缘 AI 视觉部署方案:二维码识别

【你购物我买单】Arduino UNO Q 边缘 AI 视觉部署方案:二维码识别

感谢 DigiKey 和电源网共同举办的【你购物我买单】活动,我采购的物料是 Arduino UNO Q 开发板,料号 ABX00162 .

DigiKey 物料链接:ABX00162 .

本文介绍了 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 联网即可。

软件更新

更新软件包

 sudo apt update sudo apt upgrade

环境搭建

安装 OpenCV 和 opencv-data 软件包;

 sudo apt install python3-opencv sudo apt install opencv-data

执行如下指令验证

 python3 -c "import cv2,sys;print(cv2.__version__,sys.version)"

终端打印 opencv 版本号。

QR Code

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

流程图

代码

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

#!/usr/bin/env python3
import cv2
import argparse

# input image path
parser = argparse.ArgumentParser()
parser.add_argument('--image_path', default='./img/dianyuan.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20', help='输入指令 python3 qr_code.py --image_path ./img/dianyuan.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20')
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?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20 ,打印结果

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

效果如下

总结

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

全部回复(2)
正序查看
倒序查看
2025-12-18 15:52

奈何这个板子目前还没有扩展板接摄像头 

0
回复
2025-12-22 10:18
@无言的朝圣
奈何这个板子目前还没有扩展板接摄像头 

可以接USB摄像头😉

0
回复