咸鱼K210体验笔记—二维码识别

咸鱼K210体验笔记—二维码识别

          • image

写在前面:本人非专业人员,仅为此类爱好者。分享一下新手在体验K210的过程。入门踩坑(各种跳坑),希望大佬帮忙填上一二~。(所选设备都是K210。都想体验一下。欢迎大佬指点。)因为之前有些硬件使用基础所以K210只使用视觉相关功能。

image

今天学习使用 pyAI-K210 开发套件实现二维码信息识别

二维码又称二维条码,最常见的形式是QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。

二维条码/二维码(2-dimensional bar code)用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。——百科

直接使用 MicroPython 中的 **find_qrcodes()**即可获取摄像头采集图像中二维码的相关信息。

构造函数

QRCode类 – 二维码对象

import image

image.find_qrcodes([roi])
查找 roi 区域内的所有二维码并返回一个 image.qrcode 的对象列表。
函数 说明
qrcode.corners() 返回一个由该对象的四个角组成的四个元组(x,y)的列表。四个角通常是按照从左上角开始沿顺时针顺序返回的。
qrcode.rect() 返回一个矩形元组(x, y, w, h),用于如二维码的边界框的
qrcode.x() 返回二维码的边界框的x坐标(int)。索引 [0] 取得这个值。
qrcode.y() 返回二维码的边界框的y坐标(int)。索引 [1] 取得这个值。
qrcode.w() 返回二维码的边界框的w坐标(int)。索引 [2] 取得这个值。
qrcode.h() 返回二维码的边界框的h坐标(int)。索引 [3] 取得这个值。
qrcode.payload() 返回二维码有效载荷的字符串,例如URL 。索引 [4] 取得这个值。
qrcode.version() 返回二维码的版本号(int)。索引 [5] 取得这个值。
qrcode.ecc_level() 返回二维码的ECC水平(int)。索引 [6] 取得这个值。
qrcode.mask() 返回二维码的掩码(int)。索引 [7] 取得这个值。
qrcode.data_type() 返回二维码的数据类型。索引 [8] 取得这个值。
qrcode.eci() 返回二维码的ECI。ECI储存了QR码中存储数据字节的编码。若您想要处理包含超过标准ASCII文本的二维码,您需要查看这一数值。索引 [9] 取得这个值。
qrcode.is_numeric() 若二维码的数据类型为数字式,则返回True。
qrcode.is_alphanumeric() 若二维码的数据类型为文字数字式,则返回True。
qrcode.is_binary() 若二维码的数据类型为二进制式,则返回True。如果您认真处理所有类型的文本,则需要检查eci是否为True,以确定数据的文本编码。通常它只是标准的ASCII,但是它也可能是有两个字节字符的UTF8。
qrcode.is_kanji() 若二维码的数据类型为日本汉字,则返回True。设置为True后,您就需要自行解码字符串,因为日本汉字符号每个字符是10位,而MicroPython不支持解析这类文本。

示例代码

'''
名字:识别二维码信息
日期:2020.3.19
作者:咸鱼梦工坊
说明:识别二维码信息
思路说明:
1.导入相关模块
2.初始化模块
3.识别二维码

'''
import image,sensor,lcd,time

clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1)   #后置模式
sensor.skip_frames(30)
while True:
    clock.tick()
    img = sensor.snapshot()
    res = img.find_qrcodes() #寻找二维码
    fps =clock.fps()
    if len(res) > 0:
        img.draw_string(2,2, res[0].payload(), color=(0,128,0), scale=2)
        print(res[0].payload())
    lcd.display(img)

咸鱼K210体验笔记—二维码识别_第1张图片
如果使用了镜头,画面会有扭曲,需要矫正画面 使用 lens_corr 函数来矫正, 比如 2.8mm, img.lens_corr(1.8)

你可能感兴趣的:(硬件,#,K210,AI视觉体验)