1. 案例目的

学习 AI 视觉感知模块的色块识别功能,并用 CoCube 跟随蓝色圆柱移动。

2. 使用材料

个人电脑 或 平板 CoCube机器人 + AI 视觉感知模块

3. 软件平台

MicroBlocks-CoCube

或直接打开添加有 AI 视觉感知模组的编程环境:MicroBlocks-AI Camera

4. 算法知识

算法简介

用户指定检测一个或多个颜色,判断图像中是否有该颜色的色块,返回其坐标和大小,支持多颜色多色块检测,颜色分类标签与颜色识别中的定义相同。

视频教程

视频教程:Sentry2视觉传感器-色块检测算法介绍_哔哩哔哩_bilibili

配置参数

用户需要指定待检测的颜色标签,最多可同时开启全部6种颜色检测,但速度会有所下降。用户还可以通过设置色块的最小宽度w和高度h来过滤那些小于该值的色块,以减少误报。

当通过主控设置寄存器时,有以下参数需要设置:

参数 含义
1
2
3 有效色块最小宽度w
4 有效色块最小高度h
5 待检测的颜色分类标签1~6。特殊用法:通过往参数 5 中写⼊大于6的 RGB565 颜⾊值可以识别特定的颜⾊,例如写⼊0xFB00 为橙⾊,写⼊ 0xA11E 为紫⾊

在UI界面中,有几种预置的参数可以使用:

算法性能:

根据不同的应用需求来选择合适能算法性能,有3个选项可以设置,分别为“灵敏”、“均衡”、“准确”

在灵敏模式下识别速度快,帧率高。准确模式下可以检测远处的色块,但速度会降低。默认为均衡性能

特殊的:在准确模式下对色块有较好的识别和跟踪效果,但只能识别一个色块

同时检测的最大数量:

单个颜色的最大检测数量支持1~5个的输出

当设置为1时,只返回一个最优结果,如果图像中有多个色块,则返回最大的那个,如果大小相近,则优先返回左上角的那个

当设置大于1时,返回色块的数量不会超过这个值。

最小色块的区域大小:

如果背景中存在相同颜色的小色块,可以通过合理的设置最小值实现过滤功能

绝对值坐标系下的预设值为:2x2、4x4、8x8、16x16、32x32、64x64、128x128像素

百分比坐标系下的预设值为:1x1、2x3、3x4、6x8、9x12、21x28、42x56 %

待检测的颜色:

以按键形式提供用户选择,开启某个颜色后会显示一个小眼睛图标,未开启的颜色则会显示一个带斜杠的眼睛图标,可以同时开启一个或多种颜色

返回结果

识别到指定色块后会在UI界面上进行标识,显示其位置、大小、分类标签、名称等信息

当通过主控读取寄存器时,将会返回以下的数据:

结果 含义
1 色块中心x坐标
2 色块中心y坐标
3 色块宽度w
4 色块高度h
5 颜色分类标签

使用技巧

  1. 当确定需要跟踪一个物体时,比如检测白色的道路或是跟踪小球,可以将色块数量设置为1,可以提高速度,减少误报

  2. 采用较小的识别区域并使用准确性能模式,可以看到更远处的物体

  3. 识别大面积的色块时,运行帧率会明显下降,此时可以用灵敏模式

  4. 当画面存在偏色时,需要锁定白平衡功能

需要使用到的积木说明

  1. Sentry2 初始化积木

一个可选参数是 i2c 地址。默认为 96。(0x60)

在使用 Sentry2 前需要先执行初始化积木。通常会放在“当启动时”帽子积木下。

  1. Sentry2 设置模式积木

需要设置模式为blob,即色块检测模式。

  1. Sentry2 检测结果

使用这个积木前需要确定blob算法模式已开启。

这块积木也是用来触发检测的积木,只有先使用这块积木,才能获得检测结果。

返回的结果为当前blob算法识别到的结果数量。

结果的数量会受对应算法的参数设置影响。

  1. Sentry2 检测对象属性

返回检测对象id的属性,包括色块中心x坐标、色块中心y坐标、色块宽度w、色块高度h以及颜色分类标签

其中颜色分类标签为1~5,分别代表黑色、白色、红色、绿色和蓝色。

5. 开始编程

  1. 连接设备:通过有线或者无线方式,连接 MicroBlocks IDE 与 CoCube 机器人,并将 AI 视觉感知模块拓展在 CoCube 机器人前方。

  2. 载入积木库:如未添加 Sentry2 AI 摄像头库和 CoCube 外接模块库,可先加载CoCube的外接模块库和Sentry2 AI 摄像头库。

  3. 摄像头模块初始化:选择启动时先启用外接模块电源,然后等4秒后摄像头模块启动成功再初始化I2C接口,然后再将摄像头的算法模式设置为blob模式用于色块识别。

  • 色块识别:循环判断是否有检测到Blob色块,当检测到的色块数量为1时,输出该色块的5种属性。你可以实时观察该色块的位置、大小以及颜色标签。

  • 编写自己的程序:有了上述的调试代码,不妨自己试试组合更多的功能吧!

6. 挑战一下

基于色块识别功能,实现跟随蓝色圆柱移动的功能。

注意,需要手动设置Sentry2摄像头的色块识别的参数,将识别色块的颜色由出厂默认红色,更改为蓝色。

CC-BY-SA

© 来自 CoCube 2024-2025.

This work is licensed under a CC-BY-SA 4.0 license.