我想计算从两边越线的人数。我有一个放置在天花板上的相机并拍摄线条所在的地板(所以相机只能看到人的头顶;所以它更多的是物体检测而不是人检测)。
是否有针对此问题或类似问题的示例解决方案?所以我可以向他们学习?
编辑1:任何时候都有不止一个人越线。
我想计算从两边越线的人数。我有一个放置在天花板上的相机并拍摄线条所在的地板(所以相机只能看到人的头顶;所以它更多的是物体检测而不是人检测)。
是否有针对此问题或类似问题的示例解决方案?所以我可以向他们学习?
编辑1:任何时候都有不止一个人越线。
如果除了人类之外没有其他东西会越线,那么您无需检测人,您只需检测运动即可。运动蛋白检测有多种方法。
可能最简单的一个适合您的目标。您只需计算视频流的连续帧之间的差异,这样就可以确定“运动掩码”,从而检测线交叉事件
作为这种“算法”的改进,您可以考虑“运行平均”方法。
要确定运动方向,您可以使用“运动模板”。
为了提高检测器的准确性,您可以尝试任何背景减法技术(这又不是一个简单的解决方案)。例如,如果有一些移动的背景应该被过滤掉(例如使用统计学习)
所有提到的算法都包含在 OpenCV 库中。
升级版:
cvCalcMotionGradient
,,cvSegmentMotion
(cvUpdateMotionHistory
搜索文档)。OpenCV 库包含用于运动分析的示例代码,请参见motempl.c我不是基于视频的 cv 方面的专家,但是如果您可以将问题简化为一组有限的图像(例如,进入帧、站在线上、退出帧),那么您可以使用许多形状识别算法中的一种. 我知道 Shape Context 很好,但我怀疑它对于这个应用程序是否足够微妙(它不会区分头部和大多数其他圆形物体)。
基本上,尝试从视频中提取关键图像,然后用形状识别算法对其进行测试。
PS 通过良好的运动检测方法可以找到关键图像。