K210视觉体验—颜色识别

  • 使用设备
    • ZTFR开发板
  • 颜色识别
    • Lab 颜色空间
    • 构造函数
    • 示例代码1:识别RGB(红,绿,蓝)
    • 示例代码2:识别指定颜色

使用设备

ZTFR开发板

颜色识别

MaixPy 集成了 RGB565 颜色块识别 find_blobs 函数,主要是基于 LAB 颜色模型(每个颜色都是用一组 LAB阈值表示,有兴趣的用户可以自行查阅相关模型资料)。其位于 image模块下,因此我们直接将拍摄到的图片进行处理即可。

Lab 颜色空间

有兴趣的可以点我查看:LAB色彩模型

打开MaixPy IDE,选择工具——机器视觉——阕值编辑器

构造函数

image 图像模块。导入image模块

import image
//色块对象是由 image.find_blobs 返回的。
image.find_blobs(thresholds, invert=False, roi, x_stride=2, y_stride=1, area_threshold=10, pixels_threshold=10, merge=False,margin=0, threshold_cb=None, merge_cb=None)
查找图像中指定的色块。返回 image.blog 对象列表;
【thresholds】 必须是元组列表。 [(lo, hi), (lo, hi), ..., (lo, hi)] 定义你想追踪的颜色范围。 对于灰度图像,每个元组需要包含两个值 - 最小灰度值和最大灰度值。 仅考虑落在这些阈值之间的像素区域。 对于 RGB565 图像,每个元组需要有六个值(l_lo,l_hi,a_lo,a_hi,b_lo,b_hi) - 分别是 LAB L,A 和 B通道的最小值和最大值。
【area_threshold】若色块的边界框区域小于此参数值,则会被过滤掉;
【pixels_threshold】若色块的像素数量小于此参数值,则会被过滤掉;
【merge】若为 True,则合并所有没有被过滤的色块;
【margin】调整合并色块的边缘。
函数 说明
blob.rect() 返回一个矩形元组(x,y,w,h),如色块边界。可以通过索引[0-3]来获得这些值。
blob.x() 返回色块的边界框的x坐标(int)。可通过索引 [0] 取得这个值。
blob.y() 返回色块的边界框的y坐标(int)。可通过索引 [1] 取得这个值。
blob.w() 返回色块的边界框的w坐标(int)。可通过索引 [2] 取得这个值。
blob.h() 返回色块的边界框的h坐标(int)。可通过索引 [3] 取得这个值。
blob.pixels() 返回从属于色块(int)一部分的像素数量。可通过索引 [4] 取得这个值。
blob.cx() 返回色块(int)的中心x位置。可通过索引 [5] 取得这个值。
blob.cy() 返回色块(int)的中心x位置。可通过索引 [6] 取得这个值。
blob.rotation() 返回色块的旋转(单位:弧度)。如果色块类似铅笔或钢笔,那么这个值就是介于0-180之间的唯一值。 如果这个色块圆的,那么这个值就没有效用。如果这个色块完全不具有对称性,您只能由此得到0-360度的旋转。可通过索引 [7] 取得这个值。
blob.code() 返回一个16位的二进制数字,其中为每个颜色阈值设置一个位,这是色块的一部分。 例如,如果您通过 image.find_blobs 来寻找三个颜色阈值,这个色块可以设置为0/1/2位。 注意:除非以 merge=True 调用 image.find_blobs ,否则每个色块只能设置一位。 那么颜色阈值不同的多个色块就可以合并在一起了。 您也可以用这个方法以及多个阈值来实现颜色代码跟踪。可通过索引 [8] 取得这个值。
blob.count() 返回合并为这一色块的多个色块的数量。只有您以 merge=True 调用 image.find_blobs 时,这个数字才不是1。可通过索引 [9] 取得这个值。
blob.area() 返回色块周围的边框面积(w * h)
blob.density() 返回这个色块的密度比。这是在色块边界框区域内的像素点的数量。 总的来说,较低的密度比意味着这个对象的锁定得不是很好。

示例代码1:识别RGB(红,绿,蓝)

import sensor,image,lcd,time#------常用初始化   ↓-------
lcd.init()
sensor.reset()                      #复位摄像头
sensor.set_pixformat(sensor.RGB565) # 设置像素格式 RGB565
sensor.set_framesize(sensor.QVGA)   # 设置帧尺寸 QVGA (320x240)
#------常用初始化   ↑-------
'''对于 RGB565 图像,每个元组需要有六个值(l_lo,l_hi,a_lo,a_hi,b_lo,b_hi)
分别是 LAB中 L,A 和 B 通道的最小值和最大值。
L的取值范围为0-100,a/b 的取值范围为-128到127。'''#红色阈值[0],绿色阈值[1],蓝色阈值[2]
rgb_thresholds   =[(30, 100, 15, 127, 15, 127),
(0, 80, -70, -10, -0, 30),
(0, 30, 0, 64, -128, -20)]   #阈值调试可以在IDE上看哦while True:img=sensor.snapshot()blobs = img.find_blobs([rgb_thresholds[1]])if blobs:for b in blobs:tmp=img.draw_rectangle(b[0:4])  #在图像上绘制一个矩形。tmp=img.draw_cross(b[5], b[6])  #画十字交叉c=img.get_pixel(b[5], b[6])#    返回(x, y)位置的RGB888像素元组lcd.display(img)

示例代码2:识别指定颜色

本篇说了LAB颜色模式,我们来没还没用。而且每个人像是别的色彩是不一样的。光给RGB不够。所以我们要学会自定义哦。方法如下:

  1. 开局一张图
  2. 在Maixpy IDE 选择【工具】——【机器视觉】——【阈值编辑器】
  3. 选择【图像文件】
    备注:帧缓冲区要事先把摄像头对准物体,在执行第二步
  4. 选好图片如下,尝试选择最佳的颜色跟踪阙值,通过滑动条来调节阈值,在二进制图像上红色块高亮(显示白色)。
  5. 调整好获取LAB添加到代码里
import sensor
import image
import lcd
import timelcd.init(freq=15000000)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
red_threshold =(89, 100, -122, 96, -128, 47) # LAB
while True:img=sensor.snapshot()blobs = img.find_blobs([red_threshold])if blobs:for b in blobs:tmp=img.draw_rectangle(b[0:4])tmp=img.draw_cross(b[5], b[6])c=img.get_pixel(b[5], b[6])lcd.display(img)
  1. 效果如下

K210视觉体验—颜色识别相关推荐

  1. K210视觉体验—物体识别

    K210视觉体验-物体识别 使用设备 ZTFR开发板 人脸识别 构造函数 导入模型 示例代码 基础测试 使用设备 ZTFR开发板 人脸识别 首先简单介绍一下 K210 的 KPU.KPU 是 K210 ...

  2. K210视觉体验—人脸识别

    K210视觉体验-人脸识别 使用设备 ZTFR开发板 人脸识别 构造函数 导入模型 示例代码 基础测试 炫酷识别 使用设备 ZTFR开发板 人脸识别 首先简单介绍一下 K210 的 KPU.KPU 是 ...

  3. 对k210的初探—MixNo—颜色识别_识别采集图片中间框区域的颜色值

    AIOnenet_按键按一下调用动物检测API并框出位置 今天的测评是MixNo调用Onenet平台智能识别哈士奇并框出来,串口输出图像位置. 程序如下: 以下为视频展示(测试图片来自百度) 颜色识别 ...

  4. K210视觉体验—LCD应用

    K210视觉体验-LCD应用 使用设备 ZTFR开发板 2.8寸LCD 连接方式 LCD应用 基本使用 显示英文 显示图片 利用显示图片的方式显示英文 使用设备 ZTFR开发板 2.8寸LCD LCD ...

  5. python打开是什么颜色-python实现简单颜色识别程序

    本文实例为大家分享了python实现简单颜色识别程序的具体代码,供大家参考,具体内容如下 import numpy as np import cv2 font= cv2.FONT_HERSHEY_SI ...

  6. python红色的颜色表达式_50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)...

    目前计算机视觉(CV)与自然语言处理(NLP)及语音识别并列为人工智能三大热点方向,而计算机视觉中的对象检测(objectdetection)应用非常广泛,比如自动驾驶.视频监控.工业质检.医疗诊断等 ...

  7. python颜色识别原理_电脑控制手机 Python实现颜色识别功能

    原标题:电脑控制手机 Python实现颜色识别功能 用电脑控制手机好几年了,Total Control作为安卓手机的多控系统,是我用过各方面都比较稳定的一款软件了.通过脚本实现识别颜色是其强大功能之一 ...

  8. (机器视觉)Halcon下颜色识别与联合C#编程

    一.简介 在上一篇文章中写到了关于用Halcon做颜色识别的一个实验项目,在上一篇中是在Halcon环境中进行开发的,而在实际运用中,现场是不在Halcon中进行运行程序的,而且一些逻辑在Halcon ...

  9. opencv颜色识别_opencv-python污水颜色识别

    # -*- coding: utf-8 -*- """ 污水颜色识别 """import cv2 import numpy as npimg ...

最新文章

  1. leanote个人版安装
  2. Alamofire源码解读系列(五)之结果封装(Result)
  3. (33)调试驱动程序
  4. python重启程序代码_重启python程序
  5. 掌控谈话~重复对方的话
  6. XStream入门应用程序
  7. 04MVC、RPC、SOA、微服务架构区别
  8. 收藏 | 22个短视频学习Adobe Illustrator论文图形编辑和排版
  9. iOS前后台切换和监听
  10. 计算机开机网络连接启动慢,开机后网络连接出来慢,win7开机后网络连接慢
  11. Everedit软件下载、安装和运行(免注册)
  12. 华为手机浏览器 onclick失灵的问题
  13. kafka:工具:kafkaTool 使用方法
  14. 数据结构-KMP手算next与nextval(全网最简单,包会)
  15. linux内核-进程的调度与切换
  16. 【枚举找规律】记一次找规律题 埃匹希斯水晶
  17. C#第七课文字游戏2.0版本
  18. 神经网络处理器设计原理,神经网络控制系统设计
  19. 从APP角度看复杂表格的交互绘制
  20. 合肥十中高考2021成绩查询,2019合肥十中录取分数线及2019高考成绩喜报

热门文章

  1. Leetcode_6_Z字形变换_模拟
  2. 产业区块链一周动态丨新四板跑步上链,国家区块链漏洞库定级细则发布
  3. 2022年大数据开发实习面经总结,已拿顺丰、哔哩哔哩offer
  4. 用python庆祝生日_孩子周岁生日如何庆祝才圆满?不想留遗憾的家长,多数选择这样...
  5. 验房师丨一个标准的验房师具备哪些条件,验房项目问题参考规范
  6. java计算机毕业设计西安财经大学校园一卡通管理系统源代码+数据库+系统+lw文档
  7. 元宇宙源于人类生存维度的拓展和人类感官维度的拓展
  8. 波兰式和逆波兰的相互转化
  9. ERROR 220624 --- [ntainer#2-2-C-1] o.s.k.l.KafkaMessageListenerContainer : Failed to set initial
  10. 前端 - a标签target=”_blank”