【MaixPy】:K210识别简例(简单二维码检测和双二维码检测)

2024-03-17 09:20

本文主要是介绍【MaixPy】:K210识别简例(简单二维码检测和双二维码检测),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

f5f8db2c5fec4e219afde76ba933d8ee.png

实物图

db03a193761d45aea11028750633cb97.png

俩二维码识别实物图


前言

        这段时间接触了一下基于MaixPy的开发K210的摄像头设备,的确很有趣,运行速度很快,编程难度不大。很适合咱们视觉开发的同学们学习,以下是我玩设备的一些感悟,如有不妥之处,希望大家雅正,也希望能帮助初学者了解和学习,也可加bulidupup(vx)一起学习交流!


一、MaixPy编程环境介绍

        MaixPy IDE下载链接:下载站 - Sipeed

正常安装,打开界面:

        068568870dd04f58921501fa0e82a5dc.png

 快速上手手册:MicroPython 库 — MicroPython中文 1.17 文档

很多基础的东西看看就行,只要有基础的Python程序基础就可以开始进行开发了。

 连接K210摄像头按钮:

        aeeefc48a5164e8eaeeae4ee46484499.png

连接摄像头视频:

        1950efc1310a4608b47aa596710f783e.png

成功链接之后:

        b8f857166a844c55a1d42fb041e6211f.png

如果没有如上图一样的界面(注意不要像我这个糊涂蛋一样,第一次找不到这个小按钮,

眼瞎):

        e780561db24448f9acc1895ec89b85b5.png

将自己写的代码如何上传到 K210开发板中:

        就是将打开的 脚本保存到开发板的boot.py 这样就把程序下载到了开发板中。

        49082f972c814b429b72a74d4cbe0164.png


二、二维码检测

        基于一张纸上的一个二维码识别检测。

首先我们要查找二维码:

        常见的二维码为 QR Code,QR 全称 Quick Response,它比传统的条形码(Bar Code)能存更多的信息,也能表示更多的数据类型。

        生成一个二维码,推荐草料二维码网页生成器。草料二维码生成器 (cli.im)

image(机器视觉) - Sipeed Wiki

MaixPy 查找二维码 - Sipeed Wiki

以下文章建立在官方示例的基础上,只是把我的理解融入做了自己的项目。

官方介绍:二维码对象

d206887c2546457f801bd8ba57c723a4.png

知识点:

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

官方例程:

import sensor
import image
import lcd
import timeclock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(0)
sensor.run(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)

实物效果图:

551947d80cb4482799ab1af450bce9b7.png

 读取数据结果图,数据读取正确:

5c9cff380e434d70a98c157a96ee0eba.png


三、双二维码检测

        首先在识别一个二维码的基础上,我在想如果一张纸上有两个二维码如果都想要他们的数据该怎么办?

        首先我们要明白识别的顺序,如果一张纸上两个二维码识别环境良好的基础上,识别顺序是自左向右去识别的,如果识别环境不好这种就看运气了,这种就考虑到了左右二维码的面积以及一些数据的处理了,这个我曾经已经使用openCV解决过一次了,理论上移植是没有问题,但是由于个人的时间问题没能移植,等有时间再准备判别左右二维码。

        建立在识别环境良好的基础上,我们来做二维码的识别,两个二维码的识别很简单,在某种程度上只要判别两个二维码的数据是否一致,如果不一致就一直去识别,直到识别到那个不一样的二维码。

源码(由于部分问题源码工程不能共享,大家需要自行咨询):

def Two_Qrcode():global TW_Flagglobal qr_flagglobal data_1if TW_Flag:res = img.find_qrcodes()    # 寻找二维码if len(res) > 0:# 在图片和终端显示二维码信息img.draw_rectangle(res[0].rect())img.draw_string(2,2, res[0].payload(), color=(0,128,0), scale=2)#print(res[0].payload()) #二维码信息data = []data_2 = []data_3 = []if qr_flag == 0:for ch in res[0].payload():if (ch>='1' and ch<='9') or (ch>='a' and ch<='z') or (ch>='A' and ch<='Z'):data.append(ch)data_1 = ''.join(data)print('第一次得数据:'+data_1)qr_flag  = 1if qr_flag == 1:for ch in res[0].payload():if (ch>='1' and ch<='9') or (ch>='a' and ch<='z') or (ch>='A' and ch<='Z'):data_3.append(ch)data_2 = ''.join(data_3)if data_1 == data_2:qr_flag = 1data_3.clear()data_2 = ''print('未检出第二个二维码')else:qr_flag = 2print('第二次得数据:'+data_2)if qr_flag == 1:TW_Flag = Trueif qr_flag == 2:TW_Flag = False

识别思想如上,请大家自行去思考一下,融汇一下自然能使用。

实物效果图:

070b3ab3ad5c4939b34a1abda9de70c6.png

识别结果图:

6d1539b21b19421780dff0f5a127d836.png


 总结

        以上项目总结希望对大家有所帮助,也希望大家一起来学习和努力,需要源码工程自行咨询即可!谢谢大家的支持!!!

 

这篇关于【MaixPy】:K210识别简例(简单二维码检测和双二维码检测)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/818525

相关文章

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ