视频中的车辆计数

信息处理 计算机视觉 opencv 运动检测
2022-01-05 13:12:21

免责声明:我在 StackOverFlow 上发布了这个问题,但了解到它更适合这里。

我对图像处理有点陌生,所以我想问你如何为我的问题找到最佳解决方案,而不是帮助代码。我想不出一个好主意,所以想问问你的意见。

我正在使用 OpenCV 从视频文件或实时摄像头中计算车辆数量的项目。从事此类项目的其他人通常会跟踪移动的物体,然后对其进行计数,但我不想那样做,而是想从不同的角度工作;要求用户在视频窗口上设置一个 ROI(感兴趣区域)并仅针对该区域工作(出于某些原因,例如不处理整个帧和一些性能提升),如下所示。(用户可以设置多个ROI,并要求用户通过比例感设置ROI的高度约为普通汽车的两倍。)

图片1

到目前为止,我已经取得了一些基本进展,例如背景更新、形态过滤器、阈值处理以及将移动对象作为二进制图像获取,如下所示。

图2

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

图3

如您所见,很容易计算白色像素并检查它是否按时间绘制曲线并确定是汽车还是噪音之类的东西。

问题

我非常成功,直到两辆车同时通过我的投资回报率。我的算法错误地将它们算作一辆车。我尝试了不同的方法来解决这个问题,类似于长车,但我还没有找到令人满意的解决方案。

是否可以通过这种像素值计数方法来处理此任务?如果没有,你有什么建议?

1个回答

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

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