如何解决在淡出时刻检测多个激光指示器位置
有许多变通方法可以使用 OpenCV 检测激光指示器。但我有一个相反的任务。当一个或多个指针在给定的四点轮廓区域内消失时,我需要检测多个激光指针的位置。
- 轮廓区域是静态的,不会在帧之间变化
- 指针淡出时间为 50、100、150 毫秒(可配置)
- 所有这些都应该使用 60fps 网络摄像头视频流实时工作,无需大量计算
准备步骤:
- 应用阈值过滤器
- 从 Blob Detector 获取激光指示器位置
Here is an example of resulting frame after preparation steps
可能的每帧指针条件:
- 指针 1 在轮廓区域内,指针 2 在轮廓区域外
- Blob Detector 未能在给定帧检测到一个或多个指针(但大多数情况下是这样)
- 指针 1 已被用户关闭并在给定时间(50 毫秒)内消失,但 指针 2 在轮廓区域内
- 指针 1 已被用户关闭,但 指针 2 在轮廓区域外
- 用户在轮廓区域内关闭了一个或多个指针并出现异常
- 用户在轮廓区域内关闭了一个或多个指针,并且不会再次出现在框架的任何地方
- 指针 1 已被用户关闭,距离指针 2
- 等。等
可能的解决方案之一: 为每个新检测到的指针分配固定大小的半径(比如图像大小的 10%)和时间戳。在接下来的帧中,如果在先前定义的圆形区域内没有检测到一个指针并且经过的时间超过 50ms,则将其判定为指针命中。
我已经尝试过这种方法和许多其他方法,但是根据所描述的指针条件的多样性,所有这些方法都给出了很差的结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。