K210学习笔记(八):颜色识别计数与二维码识别

这篇具有很好参考价值的文章主要介绍了K210学习笔记(八):颜色识别计数与二维码识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

宿醉断更enmmm(喝多太难受了)。前面我们介绍了使用K210进行颜色识别,在实际工程中,我们可能不止需要单纯的识别出来颜色,可能还需要计数(比如前段时间看到的有串串店利用摄像头拍照识别签子数的),当然,识别签子数肯定不是简单的颜色识别计数能解决的,为了保证准确性可能要用到包括纹理特征,颜色特征等多特征加机器学习等方法去实现。下面我们就简单介绍一下怎么去实现颜色识别计数。

前面我们知道,识别颜色需要用的函数是这个:

k210二维码识别,K210学习笔记,学习,嵌入式硬件,Powered by 金山文档

也就是说我们把颜色识别出来之后,可以通过这个函数返回的blob参数(示例代码中的blobs)来得到色块的对应位置和边界信息。从而便于我们进行绘制对应大小的方框图来标识色块。那么我们该如何获得我到底有多少个目标色块呢。我们一开始的想法可能是直接数方框图的个数,有多少个方框图就有多少个色块。实际上并不用这么麻烦,我们要知道的是blob参数是个什么。他是image.find_blobs这个函数返回的一个列表值。如果我们有

[{"x":82, "y":88, "w":8, "h":7, "pixels":28, "cx":86, "cy":91, "rotation":2.409786, "code":1, "count":1}, {"x":134, "y":148, "w":11, "h":8, "pixels":36, "cx":138, "cy":152, "rotation":0.583126, "code":1, "count":1}, {"x":126, "y":152, "w":8, "h":4, "pixels":18, "cx":129, "cy":154, "rotation":3.032258, "code":1, "count":1}, {"x":56, "y":186, "w":5, "h":6, "pixels":23, "cx":58, "cy":189, "rotation":0.553574, "code":1, "count":1}, {"x":62, "y":187, "w":5, "h":2, "pixels":10, "cx":64, "cy":188, "rotation":0.406981, "code":1, "count":1}]

这是我print出来的结果,对应的计数为5个,所以我们只需要知道blob这个返回值的长度,就可以知道我有多少个色块了。问题也就迎刃而解了。

思路大概说完了,下面就是对应的例程了

import sensor
import time
import lcd

sensor.reset()#重启即初始化摄像头
sensor.set_pixformat(sensor.RGB565)#设置摄像头捕捉格式为彩色656
sensor.set_framesize(sensor.QVGA)#设置捕捉分辨率为320*240
sensor.skip_frames(time = 2000)#等到帧率稳定时间
sensor.set_vflip(1)#设置摄像头为后置模式

clock = time.clock()#初始化一个时钟源用以记录fps
lcd.init()#lcd初始化
#颜色识别阈值(L Min,L Max,A Min,A Max,B Min,B Max)LAB模型
thresholds=[(27, 30, -66, -8, 2, 39)]#需要识别颜色的LAB阈值
while True:
      clock.tick()#启动时钟源
      img=sensor.snapshot()#捕捉照片
      blobs=img.find_blobs([thresholds[0]])#寻找对应目标并存储
      print(blobs)
      if blobs:
         print(len(blobs))
         img.draw_string(0,0,'NUM:'+str(len(blobs)),coloc=(255,255,255),scale=3,mono_space=False)
         for b in blobs:
             tmp=img.draw_rectangle(b[0:4])
             tmp=img.draw_cross(b[5],b[6])
      lcd.display(img)#图片显示
      print(clock.fps())

在这里还有一个小问题,就是我怎么知道我对应物体的LAB值,如何得到我对应的参数值,这就需要用到canmv IDE的一个小功能叫阈值编辑器。大概流程是这样的

  1. 利用新建工程中的例程打开摄像头,拍摄一张你所需要识别的物体的图片。(点击帧缓冲区的禁用相当于拍摄成功照片)

  1. 打开IDE中的 工具--机器视觉--阈值编辑器选择帧缓冲区图像

  1. 通过调整下面LAB的六个参数,使得所需要识别的物体为白色,其余为黑色(找到临界效果最佳)

  1. 复制LAB参数,这些即是识别所需的阈值参数

通过这样的工具,我们就可以得到我们想得到的参数啦。下面我们再介绍一个内容,即二维码识别

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

在 MicroPython中,提供了关于二维码识别的API find_qrcodes()用以获得二维码信息,详细函数说明如下:

k210二维码识别,K210学习笔记,学习,嵌入式硬件,Powered by 金山文档

官方文档

那么我们就可以编写程序来进行二维码的识别啦。

import sensor, image, time,lcd
#摄像头初始化
sensor.reset()
sensor.set_pixformat(sensor.RGB565)#设置摄像头捕捉格式为RGB565
sensor.set_framesize(sensor.QVGA)#设置分辨率格式为320*240
sensor.set_vflip(1)#设置摄像头为后置模式,即所见即所得
sensor.skip_frames(30)#等待30帧让摄像头稳定


#lcd初始化
lcd.init()
clock=time.clock()#初始化一个时钟源去计算帧率
while True:
      clock.tick()#启动时钟去计算帧率
      img=sensor.snapshot()#拍摄照片
      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())
         print(res[0])
      lcd.display(img)
      print(clock.fps())

好啦今天的分享就到此为止啦。文章来源地址https://www.toymoban.com/news/detail-646771.html

到了这里,关于K210学习笔记(八):颜色识别计数与二维码识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【K210】K210学习笔记五——串口通信

    本人大四学生,电赛生涯已经走到尽头,一路上踩过不少坑,但运气也不错拿了两年省一,思来想去,决定开始写博客,将电赛经验分享一二,能力有限,高手轻喷。 往期的博客讲述了 K210 的感光元件模块 sensor 的配置,机器视觉模块 image 中部分函数的使用(目前是用 find

    2024年04月28日
    浏览(47)
  • 【K210】K210学习笔记二——image

    本人大四学生,电赛生涯已经走到尽头,一路上踩过不少坑,但运气也不错拿了两年省一,思来想去,决定开始写博客,将电赛经验分享一二,能力有限,高手轻喷。 本篇主要是介绍 K210 上的 image 机器视觉模块。如果你要使用 K210 来进行一些颜色追踪( 比如识别黑色,传回

    2024年02月16日
    浏览(48)
  • 【K210】K210学习笔记四——定时器的使用

    本人大四学生,电赛生涯已经走到尽头,一路上踩过不少坑,但运气也不错拿了两年省一,思来想去,决定开始写博客,将电赛经验分享一二,能力有限,高手轻喷。 往期的博客讲述了 K210 的感光元件模块 sensor 的配置,机器视觉模块 image 中部分函数的使用(目前是用 find

    2024年02月03日
    浏览(89)
  • K210学习笔记(七)——MAIX BIT(K210)拍照

    MAIX BIT使用的是OV5642,像素为500w,但实际使用只有30w,但对于物体检测,人脸识别是够用的,用maix bit进行拍照,所得照片可以直接用于后面的数据集训练,减少了图片格式转换这一步骤。 参数说明: freq : 设置摄像头时钟频率,频率越高帧率越高,但是画质可能更差。默认

    2024年02月15日
    浏览(37)
  • 【K210】K210学习笔记三——按键、LCD、LED的使用

    本人大四学生,电赛生涯已经走到尽头,一路上踩过不少坑,但运气也不错拿了两年省一,思来想去,决定开始写博客,将电赛经验分享一二,能力有限,高手轻喷。 往期的博客讲述了 K210 的感光元件模块 sensor 的配置,机器视觉模块 image 中部分函数的使用(目前是用 find

    2024年02月11日
    浏览(49)
  • K210学习笔记(二) K210与STM32进行串口通信,K210收,STM32发

    想用STM32通过串口给K210发数据,并在屏幕上显示,看了好几篇博客,终于搞通了,大家感兴趣也可以看看。 K210学习笔记(一) K210与STM32串口通信相关 接线,STM32的串口引脚比较固定,而K210就牛比了,任意映射,懒人福音。这里我找了两个没有被复用的IO,IO9和IO10 STM32 K210 GND

    2023年04月08日
    浏览(41)
  • STM32CubeMx学习与K210串口通信+识别橘色色块——点亮小灯

     K210模块的串口发送代码 识别色块 +数字处理 这里zz是4个数字的数,则需要分成千百位和低二位传输 zz是距离。也映射了距离的算法 整体K210代码 STM32串口接受端函数 判断帧头帧尾 如果数据正常 判断 数据是否合格 若合格则点灯 否则灭灯 不要忘记加入

    2024年02月14日
    浏览(52)
  • K210学习笔记——MaixHub在线训练模型(新版)

      最近sipeed推出了新版的maixhub在线训练平台,因为前端时间比较忙没有时间来体验新版的功能,最近闲下来后赶忙来体验一下。新版maixhub对浏览器有要求的,比如不支持qq浏览器,推荐使用Chrome、Microsoft Edge、Firefox、Safari等浏览器。点击这里跳转新版maixhub。   新版mai

    2023年04月08日
    浏览(38)
  • K210学习笔记(六):摄像头的应用

    在学习了利用lcd显示固定文件的照片之后。我们知道的是手上的这块K210开发板还集成了一枚摄像头模块,因此我们就可以利用摄像头模块捕捉照片并且实时的显示在板载lcd显示屏和IDE上,我们知道视频实际上由一帧一帧的照片组成,所以我们只需要让摄像头不断地拍照片,然

    2024年02月12日
    浏览(84)
  • K210学习笔记(十二)——MaixHub本地训练模型(Windows)

    MaixHub虽然可以在线训练模型,但是数据集限制大小为20M以下,而且大多数时候都需要排队才能训练模型,这可能就不能满足我们对模型的需求,所以我在Windows系统下搭建环境,本地训练模型。对于本地训练的纯小白来说,虽然MaixHub本地训练不需要虚拟机,但是还是要严格按

    2023年04月26日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包