【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:二维码识别

【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:二维码识别

本文介绍了昉·星光 VisionFive2 Lite 单板计算机结合 OpenCV 实现二维码识别的项目设计。

项目介绍

VisionFive 2 Lite 结合 OpenCV 实现二维码识别。

  • 准备工作:硬件连接、系统安装、软件更新、OpenCV 部署、Qt 平台完善等;
  • 二维码识别:包括流程图、代码、优化、效果演示等;

准备工作

包括硬件连接、OpenCV 部署及软件更新等。

硬件连接

包括供电、联网、显示、鼠标键盘输入等。

系统安装

安装和烧录 VisionFive2 Lite 官方 Ubuntu 操作系统。

详见:VF2 Lite 系统安装

软件更新

更新软件包

wget https://github.com/starfive-tech/Debian/releases/download/v0.15.0-engineering-release-wayland/install_full.sh
sudo chmod +x install_full.sh
sudo ./install_full.sh

详见: StarFive-Tech | Debian .

OpenCV

包括 OpenCV 安装及版本检测流程。

  • 安装 OpenCV

    sudo apt update
    sudo apt install python3-opencv
    
  • 安装缺失的 libopencv 包

sudo apt install -y libopencv-dev
  • 验证安装结果
python3 -c "import cv2,sys;print(cv2.__version__,sys.version)"
  • 输出 OpenCV 版本号

至此,完成 OpenCV 的板端本地部署。

Qt 平台

完整 Qt 环境部署,以便 SSH 正常弹窗显示结果

sudo apt-get install -y libxcb-xinerama0 libxcb-xinput0 libxcb-cursor0
sudo apt-get install -y libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0
sudo apt-get install -y libxcb-render-util0 libxcb-shape0 libxcb-sync1 libxcb-xfixes0
sudo apt-get install -y libxcb-xkb1 libxkbcommon-x11-0

# 安装Qt相关的库
sudo apt-get install -y libqt5gui5 libqt5widgets5 libqt5core5a

工程代码

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

#!/usr/bin/env python3
import cv2

im = cv2.imread('./img/rvspace.png')
if im is None:
    exit('图片读取失败')

qr = cv2.QRCodeDetector()
data, _, _ = qr.detectAndDecode(im)
print(data or '未识别到二维码')
  • 终端执行 python qr_code.py 指令,运行程序;

  • 终端打印二维码识别结果;

qr_rv

优化

进一步优化代码,将识别结果显示在二维码上方

#!/usr/bin/env python3
import cv2

img = cv2.imread('./img/rvspace.jpg')
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()

保存代码。

效果

  • 终端执行 python qr_code_label.py 指令,运行程序;

  • 终端打印二维码识别结果,并弹窗显示;

更多识别效果

总结

本文介绍了昉·星光 VisionFive2 Lite 单板计算机结合 OpenCV 实现二维码识别的项目设计,包括软件源更新、opencv 和 Qt 平台部署、工程代码、优化及效果演示等,为相关产品在边缘 AI 视觉、工业生产、消费电子等领域的快速开发与应用设计提供了参考。

3 Likes