当前位置:   article > 正文

K210人工智能Scratch目标颜色识别追踪Mixly编程Micropython源码_k210颜色识别红绿蓝并亮灯

k210颜色识别红绿蓝并亮灯

齐护机器人 AIstart 颜色追踪实操详解教程

在很多情况下我们会让机器人追踪某个目标,比如通过目标的某个特性,如光,颜色,尺寸等,这里我们以追踪颜色块的方式来实现这个目的。
应用示例:颜色追踪技术的激光点追踪应用。

操作步骤:
在这里插入图片描述

软硬件:
采用的是齐护机器人的 K210(AIstart)主机,软件可以齐护编程或 Mixly 图形化软件,当然你也可以用支持 micropython 的其它软件进行代码编程的方式。
概念:
LAB 颜色模型:
Lab颜色模型是有国际照明委员会(CIE)于1976年公布的一种颜色模型,Lab颜色模型弥补了RGB和CMYK两种色彩模式的不足。Lab颜色模型由三个要素组成。一个要素是亮度(L),a 和是两个颜色通道。a包括的颜色是从深绿色(低亮度值)到灰色(中亮度值)再到亮粉红色(高亮度值);b是从亮蓝色(底亮度值)到灰色(中亮度值)再到黄色《高亮度值)。因此,这种颜色混合后将产生具有明亮效果的色彩。
在这里插入图片描述

L(Lightness):表示颜色的亮度,取值范围从0到100,其中0表示纯黑色,100表示纯白色。
a(Green-Red Axis):表示颜色的红绿色度,取值范围从-128到+127,其中-128表示绿色,+127表示红色。
b(Blue-Yellow Axis):表示颜色的黄蓝色度,取值范围从-128到+127,其中-128表示蓝色,+127表示黄色。
Lab色彩空间是一种与人眼感知颜色相关的色彩空间,可以用来描述任何一种颜色,包括明亮的颜色、暗淡的颜色、浅色和深色等等。它具有无视觉量纲的特点,也就是说,它的三个参数相对于人眼感知颜色的差异更加均匀和稳定,因此可以更好地描述颜色之间的差异和相似度。
在色差测量中,Lab色彩空间可以用来比较标准颜色和实际颜色之间的差异,以评估产品的色彩质量和一致性。同时,Lab色彩空间也被广泛应用于颜色管理、图像处理、设计等领域,以保证颜色的准确度和稳定性。
注:传入的颜色阈值参数按照 LAB 格式 (l_lo,l_hi,a_lo,a_hi,b_lo,b_hi)
l_lo,l_hi :L颜色值的设置,最高l_hi及最低l_lo的偏差范围,其它同理为 A-B 颜色模型值的上下偏差范围。
实操:
1, LAB 值采样:上传【35 颜色识别_识别采集图片中间框区域的颜色值】例程文件,如果是 Mixly 软件例程同理,记得最后打印或显示出来的 LAB 值不要转成 RGB 值,让其直接显示 LAB 值。
在这里插入图片描述

Micropython 源码:


import machine, sensor, lcd, image, image as pic

img = 0
color = 0
mylist = 0

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames(10)
sensor.set_hmirror(0)
sensor.set_vflip(0)
lcd.init(freq=15000000,color=(0xff,0xff,0xff),invert = 0)
mylist = [0,0,0]
while True:
# 从摄像头获取图象
img = sensor.snapshot()
# 颜色识别
color = img.get_histogram(roi=[135,95,50,50])
# 保存颜色到列表
mylist[0] = color.get_percentile(0.5).l_value()
mylist[1] = color.get_percentile(0.5).a_value()
mylist[2] = color.get_percentile(0.5).b_value()
# 画出检测区域
img = img.draw_rectangle([135,95,50,50],image.lab_to_rgb(mylist),1,False)
# 画个方块用于显示检测到的颜色
img = img.draw_rectangle([270,0,50,50],image.lab_to_rgb(mylist),1,True)
# 显示文本
img = img.draw_string(0, 0, (str('LAB:') + str(mylist)), scale=1, color=(0x00,0x00,0x00), x_spacing=1, y_spacing=1, mono_space=False)
lcd.display(img)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

2,摄像头中心要全覆盖要识别的颜色区,记录 LAB 值,如图:49,-23,14 得到当前色块的L值为49,A 值为-23,B 值为14。
在这里插入图片描述

3,设置 LAB 值的上下偏差,如 L 值49 我们设它的区间为2070之间,A值-23设置区间为-500之间,B 值14设置区间为0~40,这个区间越小说明精度超高,反之就识别要求更低,这个要根据用户的实际使用场景要求来设置。将上面的设置以数组的方式放入程序【34 颜色追踪_追踪采集图片中设定色域的颜色】例程文件中,如果是 Mixly 软件例程同理的 ,LAB 值处填入,如图,并将识别到色块区的显示框颜色设为红色或其它你喜欢的颜色。
在这里插入图片描述

Micropython 源码:

import machine, lcd, sensor, image

img = 0

lcd.init(freq=15000000,color=(0x61,0x74,0x63),invert = 0)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames(10)
sensor.set_hmirror(0)
sensor.set_vflip(0)
while True:
img = sensor.snapshot()
for i in img.find_blobs([(20, 70, -50, 0, 0, 40)],roi=[0,0,320,240],area_threshold=10,pixels_threshold=10,merge=True,margin=10):
img = img.draw_rectangle(i.rect(),(0xff,0x00,0x00),1,False)
lcd.display(img)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

4,上传程序运行,这时可以看到当识别到对应的采样LAB区,移动摄像头时,红色框会一直在色块边上,这样就成功追踪到颜色区了,如果你要设计外部机构得到这个框中心的坐标值,可以在程序把这个坐标输出去控制对应的机构。这样类似于定点跟踪,目标定位。。。。项目就可以用这种方式实现。
在这里插入图片描述
更多详细的关于 K210的应用可以到齐护机器人资料中心去查找学习!
结束!!祝您学习愉快!

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号