色块检测
实 验原理
本实验使用 cv_lite 提供的色块检测接口,在摄像头采集的 RGB888 图像上实时检测指定颜色的色块,并用 openmv 的绘图接口将检测到的色块外接矩形绘制出来。其底层实现基于“颜色阈值分割 + 形态学预处理 + 连通域分析”的经典流程,输入为通过 to_numpy_ref() 零拷贝获取的 ulab.numpy.ndarray,调用 cv_lite.rgb888_find_blobs。
颜色阈值分割
色块检测的第一步是把“目标颜色”从背景中分离出来。阈值以 6 元素列表 [Rmin, Rmax, Gmin, Gmax, Bmin, Bmax] 给出,对 RGB888 图像的每个像素,若其 R、G、B 三个分量同时落在各自的 [min, max] 区间内,则判为目标颜色像素,否则为背景。逐像素判断后得到一张二值掩膜(目标为前景、其余为背景)。例如 [120, 255, 0, 50, 0, 50] 表示 R 偏高、G 与 B 偏低,即红色。
形态学预处理
受光照、噪声影响,阈值分割得到的掩膜常含细小噪点或目标内部空洞。代码用 kernel_size 指定形态学核大小,对掩膜做腐蚀/膨胀(开运算)处理:先腐蚀去掉零散小点,再膨胀补回目标边缘,从而抑制噪声、使色块更紧凑连续。