【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 time

clock = 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_Flag
    global qr_flag
    global data_1

    if 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  = 1
           if 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 = 1
               data_3.clear()
               data_2 = ''
               print('未检出第二个二维码')
           else:
               qr_flag = 2
               print('第二次得数据:'+data_2)
           if qr_flag == 1:
              TW_Flag = True
           if qr_flag == 2:
              TW_Flag = False

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

实物效果图:

070b3ab3ad5c4939b34a1abda9de70c6.png

识别结果图:

6d1539b21b19421780dff0f5a127d836.png


 总结

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

 

  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
OpenCV是一个开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法。下面是使用OpenCV 4.5.2的步骤: 1. 下载OpenCV 4.5.2:你可以从OpenCV的官方GitHub页面下载OpenCV 4.5.2的源代码或者预编译的二进制文件。根据你的需求选择合适的版本进行下载。 2. 安装Visual Studio 2019:OpenCV需要使用C++编译器进行编译,因此你需要安装Visual Studio 2019作为开发环境。 3. 下载OpenCV扩展模块:如果你需要使用OpenCV的扩展功能,你可以从OpenCV的官方GitHub页面下载对应版本的扩展模块。 4. 下载CMake:CMake是一个跨平台的构建工具,你需要下载并安装CMake来配置和生成OpenCV的项目文件。 5. 解压OpenCV、扩展模块和CMake:将下载的OpenCV、扩展模块和CMake解压到指定的目录,例如D:\opencv4.5.2、D:\opencv_contrib-4.5.2和D:\cmake3.21。 6. 使用CMake进行编译:打开CMake GUI,设置源代码路径为OpenCV的根目录(例如D:\opencv4.5.2),设置构建路径为一个新的目录(例如D:\opencv4.5.2_build),点击Configure按钮,选择Visual Studio 2019作为生成器,点击Generate按钮生成Visual Studio的项目文件。 7. 打开生成的Visual Studio项目文件:在构建路径中找到生成的Visual Studio项目文件(例如D:\opencv4.5.2_build\OpenCV.sln),击打开。 8. 编译OpenCV:在Visual Studio中,选择Release或Debug配置,点击生成按钮开始编译OpenCV。 9. 完成编译:编译完成后,你可以在构建路径中找到生成的OpenCV库文件和可执行文件。 10. 使用OpenCV:现在你可以在你的项目中使用OpenCV库进行图像处理和计算机视觉任务了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值