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)
为个人学习时的记录,欢迎大家指正!ヾ(≧ ▽ ≦)ゝ