【MaixPy学习体会】(用Maixpy和Maix Go硬件识别Barcode和QR code)

【MaixPy学习体会】(用Maixpy和Maix Go硬件识别Barcode和QR code)

前言

关于MaixGo的小摄像头如何应用,Sipeed和CSDN上都有实现的例子和例程。这里要分享的是关于MaixGo上用MaixPy实现一维条码和二维条码阅读
的经验。

条形码 (一维条码、Barcode)

其一:MaixGo的摄像头为30万像素,理论上能支持640x480的分辨率,但是很多时候因为LCD分辨率只有320x240,我们就按较低的分辨率来设置成QVGA来操作了。这样对一维码的识别距离要很近-近到显示区域刚刚能覆盖条码全长才能保证分辨率足够。

其二:当使用Image module的时候,固件版本的选择要慎重。不能是Minimal固件。否则有可能不支持一个关键的模块操作描述:Image.Find_Barcodes()

一维条码识别实现

在Sipeed和MaixPy文档网页也可以能找到QR code识别的代码。稍作变更后,可以识别一维条码如下:

import sensor
import image
import lcd
import time

clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(0)
sensor.set_hmirror(0)
sensor.run(1)
sensor.skip_frames(30)
while True:
    clock.tick()
    img = sensor.snapshot()
    res = img.find_barcodes()
    fps =clock.fps()
    if len(res) > 0:
        img.draw_string(2, 2, res[0].payload(), color=(0,255,0), scale=2)
        print(res[0].payload())
    lcd.display(img)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sipeed Maix Bit 是一款基于 RISC-V 架构的嵌入式开发板,搭载了 Kendryte K210 双核处理器,支持人工智能计算。MaixPy 是针对 Sipeed Maix Bit 设计的 MicroPython 版本,可以方便地进行开发和调试。 要进行数字识别,可以使用 MaixPy 提供的图像识别库,例如 KPU(Kendryte Processing Unit)和 OpenMV。KPU 是 Kendryte K210 上的硬件加速器,能够快速进行卷积神经网络(CNN)的推理,适用于图像分类、目标检测等任务。OpenMV 则是一套基于 Python 的机器视觉库,支持多种算法和传感器,包括数字识别、颜色识别等功能。 下面是一个基于 KPU 的数字识别示例代码: ```python import sensor import image import lcd import KPU as kpu # 初始化 LCD 显示器 lcd.init() # 初始化摄像头 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) # 初始化 KPU 模型 task = kpu.load(0x300000) # 加载模型文件 kpu.set_outputs(task, 0, 1, 1, 10) # 输出通道设置 anchors = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025) # 锚点设置 a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchors) # 初始化 YOLO 模型 # 循环读取图像并进行数字识别 while True: img = sensor.snapshot() code = img.to_grayscale(1) # 转为灰度图 code = code.resize(28, 28) # 缩放为 28x28 的图像 code = code.strech_char(1) # 像素值拉伸 code = code.invert() # 反色 code = code.pix_to_ai() # 转为 AI 能处理的格式 fmap = kpu.forward(task, code) # 进行推理 plist = fmap[:] # 获取结果 max_index = max(range(len(plist)), key=plist.__getitem__) # 找到最大概率值 lcd.clear() lcd.draw_string(100, 100, str(max_index)) # 显示结果 ``` 需要注意的是,数字识别的准确度取决于模型的训练和数据集的质量,可以根据自己的需求进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值