我需要写一个程序,在十字路口停止线之前,使用摄像头检测道路上确定区域内是否存在车辆(就像感应环一样)。根据该区域上车辆的可见性,输出将为真或假。摄像头可以安装在与道路垂直的位置或安装在道路上方。目前我需要一个算法。
下图是用于检测十字路口车辆的示例实现:

经过在这个领域的一些研究,我意识到这种技术是背景减去,程序模型背景,当车辆进入区域时,它会被检测出来。但它的定义说它可以检测到移动的车辆,所以如果汽车停在传感器上50%-60%的时间(当信号灯变成红色时)怎么办?它们会成为背景吗?它们总是被检测到吗?
我在BS领域见过一些算法,比如高斯混合算法,但由于上述问题,我怀疑它们在实际情况下是否有效。
目前,我编写了一些方法,比如在Linux下使用OpenCV求平均值。程序计算矩形内平均像素,并将该值保存在缓冲区中,计算模式并与当前帧进行比较。但是也有一些问题,比如夜间的车辆灯,白天的车辆阴影,以及因为红色信号而在我的传感器上停车。
发布于 2016-12-03 21:25:46
我建议对车辆进行更好的检测,而不是将前景与背景分开。有很多灯光条件的问题,这是老式的。例如,在opencv中,您可以使用haar、cascade或LBP来快速而简单地检测车辆。在opencv 3.1中,有2个用于学习检测器的实用程序。使用检测器很简单。
与In this tutorial相同
在网络上也有一些资源,你可以下载已经预先训练好的用于汽车检测的级联。
检测Opencv中的代码简单易懂,你可以在我的博客上找到示例。另外,我有一个包含2000个汽车样本的汽车数据集。此示例仅在bash中列出到positiva示例列表中,并使用实用程序创建示例和traincascade。LBP级联在性能相当的情况下更快一点。
我也是在Linux下学习了windows上的cascade。不同之处在于程序的运行。此外,培训(必须在create samples实用程序中准备vec.vec bg.dat数据。如果你有数据集,准备训练需要20分钟。问题是在哪里可以找到数据。我在我的博客上有数据集。还要试着理解这个脚本。我的-w 32 -h 64参数是用于人员检测的。Dor Car更好一些,比如-w 32 -h 32。
./opencv_traincascade和参数
opencv_traincascade.exe -data v5 -vec vec.vec -bg bg.dat -numPos 540 -numNeg 700 -numStages 11 numThreads 4 -stageType BOOST -featureType LBP -w 32 -h 64 -minHitRate 0.999995 -maxFalseAlarmRate 0.2 -maxDepth 10 -maxWeakCount 120 ALL
我还收集了一些数据集来训练检测器。您也可以从Dataset下载数据集

https://stackoverflow.com/questions/40944775
复制相似问题