跳到主要内容

二维码识别

以下四个任务将会拆分为多个代码来完成

机器视觉识别

二维码通常包含了编码了特定信息的黑白格子,通过识别并解码这些格子的排列方式,可以获取其中包含的文本、链接、或其他数据,为机器人提供了一种快速、准确地获取数据的方式。 机器人视觉识别中的二维码识别是指利用摄像头和图像处理算法,对摄像头获取的图像进行分析,以识别并解码图像中包含的二维码信息。 在本任务中,参赛选手基于给定的二维码图片,调用摄像头进行视频流图片截取,并使用图像处理算法在当前图像中寻找二维码,将识别结果存储在变量中。 同时在 LCD 显示屏中将找到的二维码位置画一个矩形框。并在终端打印出识别到的二维码信息,显示在 LCD 屏幕上。最后在“高中组:智慧创意设计”创作说明中写下识别到的内容。

评分
调用摄像头进行视频流图片截取(0-5 分)
在 LCD 显示屏中将找到的二维码位置画一个矩形框(0-5 分)
识别到的信息准确(5 分)

图片准备

中文二维码示例图片

1717737359764

英文二维码示例图片

1717737339910

传感器连接

  • 摄像头:摄像头专用接口

参考代码

二维码识别-中文图形化代码下载

二维码识别-英文图形化代码下载

你可能想要尝试将2种类型的代码合二为一,但在图形化中是无法完成的,根本原因是图形化无法自由的加载与释放字体库,一旦加载了中文字体库,便无法再回到英文字体中,所以我们可以尝试代码解决:

import sensor
import lcd
import image
import board

lcd.init(freq=15000000,color=0)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames(10)
sensor.set_vflip(1)
while True:
img = sensor.snapshot()
for i in img.find_qrcodes([0,0,320,240]):
内容 = i.payload()
print(内容)
img = img.draw_rectangle(i.rect(),59135,1,1)
if ord(内容[0]) >= 122:
image.font_load(image.UTF8, 16, 16, 0xA00000)# 加载字体库
img = img.draw_string(0,0,str.encode(内容),color=65535,scale=1,x_spacing=1,mono_space=1)
image.font_free()# 释放字体库
else:
img = img.draw_string(0,0,内容,65535,1,mono_space=0)
lcd.display(img)

流程图

1719293596792