MaixCAM MaixPy 二维码识别
2024-04-03
更新历史
日期 | 版本 | 作者 | 更新内容 |
---|---|---|---|
2024-04-03 | 1.0.0 | lxowalle | 初版文档 |
阅读本文前,确保已经知晓如何开发MaixCAM,详情请阅读快速开始
简介
本文介绍如何使用MaixPy来识别二维码
使用 MaixPy 识别二维码
MaixPy的 maix.image.Image
中提供了find_qrcodes
方法,用来识别二维码。
如何识别二维码
一个简单的示例,实现识别二维码并画框
from maix import image, camera, display
cam = camera.Camera(320, 240)
disp = display.Display()
while 1:
img = cam.read()
qrcodes = img.find_qrcodes()
for qr in qrcodes:
corners = qr.corners()
for i in range(4):
img.draw_line(corners[i][0], corners[i][1], corners[(i + 1) % 4][0], corners[(i + 1) % 4][1], image.COLOR_RED)
img.draw_string(qr.x(), qr.y() - 15, qr.payload(), image.COLOR_RED)
disp.show(img)
步骤:
导入image、camera、display模块
from maix import image, camera, display
初始化摄像头和显示
cam = camera.Camera(320, 240) # 初始化摄像头,输出分辨率320x240 RGB格式 disp = display.Display()
从摄像头获取图片并显示
while 1: img = cam.read() disp.show(img)
调用
find_qrcodes
方法识别摄像头中的二维码qrcodes = img.find_qrcodes()
img
是通过cam.read()
读取到的摄像头图像,当初始化的方式为cam = camera.Camera(320, 240)
时,img
对象是一张分辨率为320x240的RGB图。img.find_qrcodes
用来寻找二维码,并将查询结果保存到qrocdes
,以供后续处理
处理识别二维码的结果并显示到屏幕上
for qr in qrcodes: corners = qr.corners() for i in range(4): img.draw_line(corners[i][0], corners[i][1], corners[(i + 1) % 4][0], corners[(i + 1) % 4][1], image.COLOR_RED) img.draw_string(qr.x(), qr.y() - 15, qr.payload(), image.COLOR_RED)
qrcodes
是通过img.find_qrcodes()
查询二维码的结果,如果找不到二维码则qrcodes
内部为空qr.corners()
用来获取已扫描到的二维码的四个顶点坐标,img.draw_line()
利用这四个顶点坐标画出二维码的形状img.draw_string
用来显示二维码的内容和位置等信息,其中qr.x()
和qr.y()
用来获取二维码左上角坐标x和坐标y,qr.payload()
用来获取二维码的内容
常用参数说明
列举常用参数说明,如果没有找到可以实现应用的参数,则需要考虑是否使用其他算法实现,或者基于目前算法的结果扩展所需的功能
参数 | 说明 | 示例 |
---|---|---|
roi | 设置算法计算的矩形区域,roi=[x, y, w, h],x,y表示矩形区域左上角坐标,w,h表示矩形区域的宽度和高度,默认为整张图片 | 计算坐标为(50,50),宽和高为100的区域img.find_qrcodes(roi=[50, 50, 100, 100]) |
qrcoder_type | 设置二维码库解码器类型,可以选择image.QRCodeDecoderType.QRCODE_DECODER_TYPE_ZBAR或者image::QRCodeDecoderType::QRCODE_DECODER_TYPE_QUIRC. QRCODE_DECODER_TYPE_ZBAR在分辨率较小时识别速度更快,识别精度更高. QRCODE_DECODER_TYPE_QUIRC在分辨率较大时相对速度更快,但识别精度相对较低. 默认使用QRCODE_DECODER_TYPE_ZBAR. v4.7.7及以后的版本有效. |
img.find_qrcodes(decoder_type=image.QRCodeDecoderType.QRCODE_DECODER_TYPE_ZBAR) |
本文介绍常用方法,更多 API 请看 API 文档的 image 部分。