灯条识别

在已知灯条颜色的情况下分离出灯条的过程十分简单,本处不再赘述。灯条识别主要存在的不确定点便是排除干扰。可以从以下几个角度入手。

  • 灯条的长宽比。
  • 装甲板在赛场上的固定几种摆放姿态使得其倾斜角度在一定范围内。

基于以上两点,便可以排除形状和姿态不符合灯条条件的干扰。

装甲板识别

装甲板识别基于灯条识别后返回的有效结果。因为画面中可能存在多个灯条,这里的不确定性主要在于有效装甲板的筛选。

  • 由两个灯条组成。
  • 两灯条都有一个角度。并且因为两灯条在装甲板上平行,且与摄像机俯仰角在一定范围内,两灯条角度与高度差应该在一定范围内。
  • 因为装甲板水平放置,考虑摄像机位置原因,其斜率在一定范围内。
  • 在实际处理中,太偏僻的装甲板应当酌情予以舍去,因为它不适合作为打击目标。

杂项

性能

为确保足够高的帧率,需要在处理过程中尽可能减少运算量。

  • 使用 ROI 降低每帧要处理的图像尺寸。
  • 在循环外定义变量,避免频繁的大量对象创建和销毁。

RotatedRect 中返回的角度与宽高的问题

RotatedRect 返回角度的规则为:取距离原点(画面左上角)最近的一条边做延长线,延长线与 x 轴的交点即为返回的角度值(单位 度)。

并且,在 Open CV 中,定义 RotatedRect 距离原点最近的一条边为宽。

fitEllipse

拟合 RotatedRect 还有一个选择:fitEllipse。这个函数会尝试拟合一个椭圆,因此返回的角度值会没有那么迷惑(0°~180°)。

2 个评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注