免责声明:我在StackOverFlow上发布了此问题,但了解到它更适合于此。 。
我还没有想到一个好主意,所以想问您一个建议。
我正在使用OpenCV进行一个项目,该项目用于从视频文件或实时摄像机中计算车辆的数量。从事此类项目的其他人通常会跟踪移动的物体,然后对其进行计数,但与此相反,我想换一个角度来看。要求用户在视频窗口上设置一个ROI(感兴趣的区域),并且仅在该区域内工作(由于某些原因,比如不处理整个帧并提高性能),如下所示。 (用户可以设置多个ROI,并要求用户将ROI的高度设置为普通汽车的两倍左右)。

我已经做了一些基本的改进到目前为止,例如背景更新,形态滤镜,阈值化以及将移动对象作为二进制图像进行如下所示。

做完这些之后,我试图计算最终阈值前景帧的白色像素并通过检查白色像素总数来估算它是否是汽车(我通过知道ROI的高度通过静态计算来设置下限)。为了说明这一点,我绘制了一个示例图形:

您可以看到,很容易计算白色像素并检查它是否按时间绘制曲线并确定是汽车还是类似噪音的东西。
问题
直到两辆车同时通过我的投资回报率,我才取得了成功。我的算法错误地将其视为一辆汽车。我针对此问题尝试了不同的方法,类似于长车,但没有找到令人满意的解决方案。
问题
是否可以通过这种像素值计数方法来处理此任务?如果没有,您有什么建议?

评论

您的问题是人们使用跟踪的原因。另外,您是否希望将一起移动的汽车(例如带拖车的汽车)计为一两辆车?

首先,感谢版本。我不希望%100的准确性,带拖车的汽车可以忽略。但是,如果是两辆彼此相距很近的独立汽车,我需要使程序区分它们,但我不知道。

#1 楼

您可以跟踪最近的10-15帧,并计算这些帧的白色像素数。您可以区分它是否是车辆,因为该图表在10-15帧中会很高,因此您可以说它是车辆,否则就是噪音。

要计算多条并排车道中的多辆车,您可以逐列检查像素,我的意思是垂直。目前,您必须水平检查像素中的白色像素。

评论


$ \ begingroup $
是的,您对检查垂直线是正确的,但是如何?我可以通过检查投资回报率的第一行来确定车辆的进入点吗?
$ \ endgroup $
–Horizo​​n1710
2012年5月22日,0:01