引言

要实现色块查找,首先我们是在RGB格式下对红,黄蓝三原色的值域进行规定,例如:red = (minL, maxL, minA, maxA, minB, maxB)
通常我们在程序中使用thresholds来定义域值,它的参数可以是多个颜色的列表,例如:thresholds = [(255,0,0,0),(255,255,0,0),(0,0,0,255)]
在定义好所需要查找的色块阈值后,需要对图像进行实例化:img = sensor.snapshot() #这里需要解释的是snapshot()是快照函数,可以截取下视频流中的一个画面
随后调用find_blobs()函数,它可以帮我们找到img这个画面中所有符合值域的像素点。



find_blobs()参数

  • roi(感兴趣区:

roi是一个元组, roi = (x, y, w, h),代表从左上顶点(x,y)开始的宽为w高为h的矩形区域,roi不设置的话默认为整个图像视野。

  • x_stride(查找x方向上最小宽度的像素,默认=2)
  • y_stride(查找y方向上最小宽度的像素,默认=1)
  • invert(反转值域,在值域以外的区域进行查找)
  • area_threshold(面积值域,若色块面积小于这个值时,色块会被过滤掉)
  • pixels_threshold(像素值域,当色块像素小于这个值时,色块会被滤掉)
  • merge(当它为 True的时候,把所有色块合并为一个)
  • margin(边界值,当两个blob的间距为一个像素点时,它们会被合并)

函数

当我们找到了色块所在位置后,现在则是把它们用圆圈或者矩形框围起来,这里引出了openmv画图的函数

  • 画矩形:draw_rectange()
  • 画圆形:draw_circle()
  • 画十字:draw_cross()

以上函数的参数都可以引用blobs的参数[引用]

blobs参数

 [0]  代表识别到的目标颜色区域左上顶点的x坐标,
[1]代表左上顶点y坐标
[2]代表目标区域的宽
[3]代表目标区域的高
[4]代表目标区域像素点的个数
[5]代表目标区域的中心点x坐标
[6]代表目标区域中心点y坐标
[7]代表目标颜色区域的旋转角度(是弧度值,浮点型,列表其他元素是整型)
[8]代表与此目标区域交叉的目标个数
[9]代表颜色的编号(它可以用来分辨这个区域是用哪个颜色阈值threshold识别出来的)

以上,我们就完成了识别色块并将其用矩形或圆圈框起来的功能了,以下是完整代码:

# 单颜色组合识别例程
#
# 这个例子显示了使用OpenMV的单色代码跟踪。
#
#颜色代码是由两种或更多颜色组成的色块。下面的例子只会跟踪同时具有以下两种颜色的彩色物体。import sensor, image, time# Color Tracking Thresholds (L Min, L Max, A Min, A Max, B Min, B Max)
# The below thresholds track in general red/green things. You may wish to tune them...
thresholds = [(30, 100, 15, 127, 15, 127), # generic_red_thresholds -> index is 0 so code == (1 << 0)(30, 100, -64, -8, -32, 32)] # generic_green_thresholds -> index is 1 so code == (1 << 1)
# 当“find_blobs”的“merge = True”时,code代码被组合在一起。sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
sensor.set_auto_gain(False) # must be turned off for color tracking
sensor.set_auto_whitebal(False) # must be turned off for color tracking
clock = time.clock()# 只有比“pixel_threshold”多的像素和多于“area_threshold”的区域才被
# 下面的“find_blobs”返回。 如果更改相机分辨率,
# 请更改“pixels_threshold”和“area_threshold”。 “merge = True”合并图像中所有重叠的色块。while(True):clock.tick()img = sensor.snapshot()for blob in img.find_blobs(thresholds, pixels_threshold=100, area_threshold=100, merge=True):if blob.code() == 3: # r/g code == (1 << 1) | (1 << 0)img.draw_rectangle(blob.rect())img.draw_cross(blob.cx(), blob.cy())print(clock.fps())

总结

主要是理解思路,代码在官网都有,对值域的选择以及最后逻辑的处理会影响你最后的效果(如果你在此之后也要做颜色跟踪)

对openmv色块查找的思考笔记相关推荐

  1. OpenMV色块寻找

    OpenMV入门,从入门到入坟>_< 此文章大部分内容取自OpenMV官方中文参考文档 详情看OpenMV官方中文参考文档 文章目录 一.sensor.snapshot()拍一张照片 二. ...

  2. 与小弟子交谈:引申的思考笔记[第一次编辑]

    #----------------------------------------------------------#  # ====> 红色字体 -特指煮酒个人所见.加粗则为需要重点注意.  ...

  3. Android第一行代码学习思考笔记(碎片、广播、持久化技术和Android数据库)

    Android第一行代码学习思考笔记(碎片.广播.持久化技术和Android数据库 第四章 手机平板要兼顾--探究碎片 4.1碎片是什么(Fragment) 4.2碎片的使用方式 4.2.1碎片的简单 ...

  4. 达利欧《原则》读书思考笔记

    子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之".保持谦虚好学的态度,书是一定要多读的.书,是别人思想的精华.特别是一些好书,肯定有它的独特之处.然而尽信书则不如无书, ...

  5. 【openmv学习笔记:1】色块查找

    目录 (一)显示图像 (二)标记色块 2.1 `find_blobs`函数 2.2 颜色阈值 2.3 标记 (一)显示图像 星瞳科技openmv官方资料 嵌入式图像处理环境: 硬件平台:OpenMV4 ...

  6. Openmv实现图像中最大色块查找

    目录 前言 一.前期准备 二.使用步骤 1.引入库 2.初始化 3.元件初始化 4.色块分类 前言 本例程实现对图像中红 黄 绿三种不同颜色色块的分类 一.前期准备 openmv IDE安装及熟悉,详 ...

  7. 算法基础:常用的查找算法知识笔记

    1.查找表和查找效率的概念 查找表是指由同一类型的数据元素构成的集合.分为静态查找表和动态查找表. 1.1 静态查找表 1.查询某个特定元素是否在查找表的集合当中 2.查询某个特定元素的各种属性 1. ...

  8. 《现代操作系统》精读与思考笔记 第一章 引论

    本系列博文是<现代操作系统(英文第三版)>(Modern Operating Systems,简称MOS)的阅读笔记,定位是正文精要部分的摘录和课后习题精解,因此不会事无巨细的全面摘抄,仅 ...

  9. Linux下文件查找命令find笔记

    在Linux命令下如果需要快速自己系统所需要处理的文件,可以通过find命令快速进行检索. 如果想在某个路径下查找相应的文件可以执行如下命令: find path -name filename # p ...

最新文章

  1. 【我的Android进阶之旅】解决Android Studio启动时报错:Java 1.8 or later is required.
  2. C++入门指南及实战 第一步 概述及经典HelloWorld
  3. mysql分组查询和子查询语句_6.MySQL分组聚合查询,子查询
  4. 调试利器:浏览器 Logger
  5. Python基础入门_3条件语句和迭代循环
  6. 合理设置apache的连接数及进程工作方式
  7. 【转】写给想学习自动化测试的新人
  8. Error: Plugin/Preset files are not allowed to export objects, only functions……
  9. LeetCode Week 5:第 41 ~ 50 题
  10. Struts2之ajax初析
  11. iOS开发经验总结(上)
  12. linux文件权限的设置命令
  13. react ssr方法
  14. JAVA_SE_Day13
  15. 【寒江雪】UV+Depth信息计算世界坐标
  16. IMO 2017 T4解答
  17. 视频人员行为识别(Action Recognition)
  18. 有没有英语语音测试软件,没有雅思的高分女朋友虐你英语,就善用手机的app录音自测练习...
  19. 速卖通流量新赛道,AE Mall商家享有权益和招商标准,看这篇文章就好了
  20. JavaWeb购物车项目二

热门文章

  1. 关于fastapi框架的异步
  2. Must call super constructor in derived class before accessing or returning from derived const
  3. BlockingQueue实例
  4. python网格交易_网格交易(期货)
  5. mysql to_days() 逆向函数_mysql的 TO_DAYS() 函数应用实例
  6. 2007年生日祝福:宝贝,谢谢您陪伴我走过人生风风雨雨,祝您2007年生日快乐!
  7. jQuery源码解析(架构与依赖模块)第一章 理解架构
  8. Java MD5和SHA256等常用加密算法
  9. 巧妙隐藏Word文档中指定文字内容
  10. db2数据库(db2数据库安装)