0

我是 OpenCV 的新手,我想知道如何识别边缘图像中的汽车,因为我想根据边缘计算图像中的汽车。

这是精巧的边缘图像

精巧的汽车

这是原始图像

原始图像

4

2 回答 2

1

为任何目的(例如计数)识别给定场景上的动态对象的一般问题可以通过使用背景减法来解决。

这个想法是使用 OpenCV 提供的这种技术的实现之一,例如BackgroundSubtractorMOG,通过提供视频流的每一帧供其处理,为您的场景构建背景模型。它将识别场景的哪些特征最可能是静态的,以构建最可能的背景的合成图像,在您的案例中没有汽车的停车场。然后,您将从该合成背景中减去给定帧并计算具有最小尺寸的斑点,即大到足以成为车辆。

结果令人印象深刻,我特别喜欢这种技术。在 youtube 上,您可以查看一些示例,我建议您使用这个,这与您的特定情况非常接近。这里的这个也很有趣,因为它和当前帧并排显示了合成背景图像,所以你可以看到它的效果如何。密切注意最后一个视频的00:50左右,你可以看到汽车慢慢地出现在背景图像上,因为它在同一个地方停留的时间太长了。

于 2013-09-14T16:23:27.147 回答
1

人类不善于发现事物吗?即使看不到一个车轮,您甚至可以识别出精巧边缘图像中的汽车。

无论如何,您使用精明边缘检测的主要原因是因为您拥有每秒 10-100 兆像素的数据流。您需要快速找到其中有趣的部分。正如您的图像所示,它非常适用。

现在,要计算停车位中的实际汽车数量,我建议采用固定设置程序来识别潜在停车位。无论如何,您都不想计算经过的汽车。此步骤可以通过检查精明图像中的平行线集来半自动化。

一旦你确定了这些停车位,定义一个面具可能是个好主意。使用此蒙版将非停车点像素归零。(在精明的边缘检测之前执行此操作也会加快该过程,但显然会在遮罩周围添加错误边缘,因此您必须重新应用遮罩。)

现在它实际上只是检查停车位是否有足够大的东西。你可能不在乎摩托车是否算作汽车。为此,请使用精巧的边缘将汽车像素与周围的停车场像素分开,并计算它们是否不同(颜色/亮度/纹理/...)

于 2013-09-15T23:51:20.817 回答