好吧,那么。。。。我可能在这方面做了太多的工作,但似乎很简单。在
为了实现我的目标,我决定最好找到空置的停车位,并假设所有其他车位都被占用了。为了确定一个位置是否是空的,我只是将它与一个停车位大小的道路部分进行了比较。这意味着无论是亮的还是暗的,同样的算法都应该起作用,因为模板是直接从图像中提取出来的。在
现在我只做模板匹配(我尝试了各种方法,但是cv2.TM_CCORR_NORMED效果最好)。这是一个不错的结果,现在我们需要处理它。在
我在停车场行周围创建roi(感兴趣的区域)。然后通过对每列进行统计,将它们压缩成一个向量。我看这是卑鄙的。
这是一个很好的指标,你已经可以清楚地看到空位在哪里。但是深色汽车仍然存在一些问题,所以现在我们决定看看另一个统计数据,方差如何?整个地区的停车场都很固定。另一方面,汽车也有一些变化,车窗、车顶行李架的后视镜也会有所不同。所以我画了“反转”方差。所以它的方差不是没有变化,而是方差是1。看起来像这样
这看起来很有前途!但你知道还有什么更好吗?把两者结合起来!所以让我们把它们相乘,我把这个结果叫做“概率”,因为它应该在0和1之间
现在你真的可以看到空白和黑暗的车之间的区别了。让我们做一些简单的阈值。这很好,但它没有给出车辆/空位的数量。在这一点上,我们一列一列地检查“概率”,并寻找超过阈值的特定数量的连续像素。多少像素?像素和汽车的宽度差不多。这种“滞后”型模型应能抑制任何峰值或虚假数据点。在
现在,我们假设空间的数量是恒定的(我认为这是合理的假设),我们只需说number of cars = number of spaces - number of empty spaces并标记图像
打印一些结果found 24 cars and 1 empty space(s) in row 1
found 23 cars and 0 empty space(s) in row 2
found 20 cars and 3 empty space(s) in row 3
found 22 cars and 0 empty space(s) in row 4
found 13 cars and 9 empty space(s) in row 5
当然还有密码。它可能不是最有效的,但我通常是一个matlab人,这是我的第一个openCV/Python项目
^{pr2}$