前言

MAIX BIT(K210)和openmv在传统视觉处理这个方面代码是通用的,掌握K210的色块识别和二维码识别其实也掌握了openmv对应的用法。

一、二维码是什么?

二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。从对二维码的定位上看,二维码是一个门、一扇窗,或是一个通道,我们所看到的会因扫描它呈现出另一番广阔的景象。打开手机扫一扫、拍一拍,整个操作过程只需短短几分钟,甚至是几十秒钟。大多数情况下,通过扫描二维码可以得到制作者想要告知你的信息。
QR码的特点:
1、容错率高
QR二维码有着30%的容错率。因此即便出现30%的不正确,扫描软件也可以正确完成解读二维码。

2、信息含量大
QR二维码最多可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,是一维条形码的几十倍。计算机中常见的文字、声音、图片等信息都可以储存在二维码中,众多的语言和图像数据也可以用二维码轻松完成。

3、等等…想知道更多可以点击这里。

二、使用方法

1.find_qrcodes() 函数

在image 模块中已经实现有查找二维码方法,需要使用非 minimum 固件版本(点击这里下载),需要准备一个二维码,可以用草料二维码生成你想要的内容.

import image, sensor
img=sensor.snapshot()
#从摄像头获取图片,将摄像头对准二维码
res = img.find_qrcodes()
#从图片中查找所有二维码对象(image.qrcode)列表
print(res[0].payload())
#操作二维码对象,例如打印信息

2.QRCode类 – 二维码对象函数

二维码对象是由 image.find_qrcodes 返回的。

函数 说明
qrcode.corners() 返回一个由该对象的四个角组成的四个元组(x,y)的列表。四个角通常是按照从左上角开始沿顺时针顺序返回的。
qrcode.rect() 返回一个矩形元组(x, y, w, h),用于如二维码的边界框的 image.draw_rectangle 等其他的 image 方法。
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不支持解析这类文本。

三、MAIX BIT(K210)识别二维码并与STM32通讯

先用草料二维码生成一个二维码,maix bit识别后将二维码框出来并识别到的信息打印出来。有了之前与stm32串口通讯的经验,就可以将识别到的信息通过串口发送到stm32。(下面的程序没有加串口,有需要的可以cv一下)
程序:

import image
import sensor
import lcd
import time
clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(0)
lcd.rotation(2)
sensor.skip_frames(30)
while True:clock.tick()img = sensor.snapshot()res = img.find_qrcodes() #识别二维码fps =clock.fps()if res:for b in res:tmp=img.draw_rectangle(b[0:4])img.draw_string(2,2, res[0].payload(), color=(0,128,0), scale=2)#将二维码框出print(res[0].payload())lcd.display(img)

运行效果:

maix bit识别二维码

总结

用maix bit识别二维码的方法与openmv一样,现在只是初步学习了二维码识别的用法,想要深入学习,还得多使用一下QRCode类 – 二维码对象函数。

K210学习笔记(十)——二维码识别相关推荐

  1. 【毕业设计】深度学习二维码识别系统 - python opencv

    文章目录 0 前言 2 二维码基础概念 2.1 二维码介绍 2.2 QRCode 2.3 QRCode 特点 3 机器视觉二维码识别技术 3.1 二维码的识别流程 3.2 二维码定位 3.3 常用的扫 ...

  2. 【第 07 章 基于主成分分析的人脸二维码识别MATLAB深度学习实战案例】

    基于主成分分析的人脸二维码识别MATLAB深度学习实战案例 人脸库 全套文件资料目录下载链接–>传送门 本文全文源码下载[链接–>传送门] 如下分析: 主文件 function varar ...

  3. 【毕业设计】python+opencv+深度学习实现二维码识别

    文章目录 0 前言 2 二维码基础概念 2.1 二维码介绍 2.2 QRCode 2.3 QRCode 特点 3 机器视觉二维码识别技术 3.1 二维码的识别流程 3.2 二维码定位 3.3 常用的扫 ...

  4. halcon例程学习 一维码、二维码识别

    1.一维条码 一维条码:由一组规则排列的条.空以及对应的字符组成的标记,"条"指对光线反射率较低的部分,"空"指对光线反射率较高的部分,这些条和空组成的数据表达 ...

  5. python二维码生成识别代码_Python学习案例之二维码生成识别

    前言 在 JavaWeb 开发中,一般使用 Zxing 来生成和识别二维码,但是,Zxing 的识别有点差强人意,不少相对模糊的二维码识别率很低.不过就最新版本的测试来说,识别率有了现显著提高. 对比 ...

  6. 前端学习--实现二维码识别功能

    概述: 最近所做的毕设项目正好与之前很火的共享单车相关,共享单车应用中很关键的一个部分就是扫码用车,但我之前没有做过相关的模块,在参考网上相关实现的教程时发现,基本上所有的二维码识别模块都是通过客户端 ...

  7. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  8. 机器视觉运动控制一体机应用例程|电子烟二维码识别

    方案背景 随着社会生活水平的不断提高,电子烟已普遍成为一种大众消费电子产品. 传统电子烟的烟弹在完成烟油加注完后,仍需依赖于人工使用扫码枪或者半自动设备,在生产的环节中进行至关重要的二维码识别. 这种 ...

  9. openmv和stm32串口通信完成二维码识别

    openmv和stm32串口通信完成二维码识别 文章目录 前言 一.所用的硬件: 二.openmv端 2.stm32端 总结 前言 注:我只是个大一的小白,本文只完成基本功能,希望能帮助有困惑的人(我 ...

最新文章

  1. [置顶] ros的navigation之———gmapping应用详解(in ros)
  2. spring中Constructor、@Autowired、@PostConstruct的顺序
  3. ArcEngine的鼠标事件中按键判断~
  4. 一键洞悉员工级人效!智邦国际集团业财一体化管理系统:业财一心,基业长青
  5. 前端开发 个人简历的制作 0228
  6. yum安装ruby_rediscluster安装
  7. CentOS8 同步时间chrony ntpdate已无法使用
  8. 卸载vuecli3_112、vue-cli3安装遇到的问题,卸载不掉旧版本,导致更新不了
  9. doc 问卷调查模板表_Word制作电子版问卷调查模板表「教你方框内打钩」
  10. 计算机键盘fn,键盘功能键Fn
  11. python将输入的字符串反转过来_如何实现python字符串反转?
  12. RK3568 Android固件介绍、固件烧录、开机进系统
  13. xilinxFPGA-VGA时序+代码实现详解
  14. 6-4 静态成员应用
  15. 《Java 2 实用教程》读书笔记(二)
  16. H264的基本原理(二)------ H264编码原理
  17. 华为HMS Core出海游戏大招募,丰厚奖金等你来
  18. java中PageInfo类的作用及用法
  19. eclipse手动pom本地包_eclipse手动添加本地jar包到本地maven仓库
  20. LINUX 不删除指定文件其余文件全部删除

热门文章

  1. [获取手机信息]-通过 ADB 命令获取手机信息
  2. BZOJ2648: SJY摆棋子2716: [Violet 3]天使玩偶
  3. 读文件并算出平均数&找出排名前3的成绩(c语言 可运行)
  4. Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] ...
  5. Vue.js 教程---菜鸟教程
  6. 竞价排名真不是谁出价最高,一定排在最前面(史上最大误会)
  7. 计算机网络课程见习报告
  8. 前端练习--京东图片链接
  9. LeetCode第 844 题:比较含退格的字符串(C++)
  10. 如何批量在图片上加统一的文字?