k210——识别条形码、QR码、AprilTag码并按要求保存

k210——识别条形码、QR码、AprilTag码并按要求保存

看到19年的巡线机器人中有条形码与QR码的识别并需要将它保存到sd卡中,所以练习时首先将最简单的识别与保存进行了编写,没有编写题目中的逻辑QAQ
如果想详细学习的朋友可以查看条形码,QR码,AprilTag


实现效果图(保存在sd卡中的图片)

条形码二维码

其实也可以将图片上的框与文字去除,但是存在并不影响后期手机的识别效果(已检验)

代码展示

import sensor, image, time,lcd

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
clock = time.clock()
sensor.skip_frames(time = 2000)
i=0 #记录条形码拍的张数
j=0 #记录二维码的张数
k=0 #记录AprilTag的张数

def find_qrc(img):
    global j
    max_qrcode = None
    max_area = 0
    res=img.find_qrcodes()
    if res:
        for qrcode in res:
           area = qrcode.w() * qrcode.h()
           if area > max_area:
               max_qrcode = qrcode
               max_area = area

        if max_qrcode:
            img.draw_string(0,0,max_qrcode.payload(),color=(0,128,0),scale=2)
            img.draw_rectangle(max_qrcode.rect(), color=(255, 0, 0))  # 用红色矩形圈出最大的
            #print(max_qrcode.payload()) # 在控制台打印QR码的内容(payload)
            if j<3:
                img.save("/sd/max_qrcode" + str(j + 1) + ".jpg")  # 将j转换为字符串形式,并指定保存地址到SD卡
                print("保存第%d张二维码成功"%(j+1))
                j+=1
            else:
                print("已经保存足够的二维码了")
    else:
        pass

def find_barc(img):
    global i
    max_barcode = None
    max_area = 0
    barcodes=img.find_barcodes()
    if barcodes:
        for barcode in barcodes:
           area = barcode.w() * barcode.h()
           if area > max_area:
               max_barcode = barcode
               max_area = area

        if max_barcode:
            max_barcode_data = max_barcode.payload()
            img.draw_string(0,0, max_barcode_data, scale=2)
            img.draw_rectangle(max_barcode.rect(), color=(255, 0, 0))  # 用红色矩形圈出最大的条形码
            if i<3:
                img.save("/sd/max_barcode" + str(i + 1) + ".jpg")  # 将i转换为字符串形式,并指定保存地址到SD卡
                print("保存第%d张条形码成功"%(i+1))
                i+=1
            else:
                print("已经保存足够的条形码了")
            #print(max_barcode_data)
    else:
        pass
def find_AprilT(img):
    global k
    max_apriltag = None
    max_area = 0
    apriltags = img.find_apriltags()

    if apriltags:
        for apriltag in apriltags:
            area = apriltag.w() * apriltag.h()
            if area > max_area:
                max_apriltag = apriltag
                max_area = area

        if max_apriltag:
            img.draw_rectangle(max_apriltag.rect(), color=(0, 0, 255))  # 用蓝色矩形圈出最大的AprilTag
            if k < 3:
                img.save("/sd/max_apriltag" + str(k + 1) + ".jpg")  # 将k转换为字符串形式,并指定保存地址到SD卡
                print("保存第%d张AprilTag成功" % (k + 1))
                k += 1
            else:
                print("已经保存足够的AprilTag了")
    else:
        pass

while True:
    clock.tick()
    img = sensor.snapshot()
    # 应用镜头畸变矫正函数,这个参数需要根据实际效果进行调整
    img.lens_corr(1.8)
    find_qrc(img)
    find_barc(img)
    find_AprilT(img)


为个人学习时的记录,欢迎大家指正!ヾ(≧ ▽ ≦)ゝ

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写的什么石山代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值