基于OpenCV的级联分类器检测交通信号

时间:2017-11-21 23:37:40

标签: opencv image-processing object-detection haar-classifier cascade-classifier

我正在研究“根据交通信号灯(红色,绿色,黄色)的变化控制Raspberry Pi的GPIO引脚”。现在,我只专注于交通灯检测部分。为此,我使用Cascade分类器来实现Haar功能。

我有2000个负样本图像,我已将其转换为灰度并重新塑造为120 X 120.此外,我有一个交通信号正面图像(40 X 120),我从中生成2000个正样本。最后,我正在训练我的分类器使用2000个阳性样本和1000个阴性样本,分为10个阶段。

我的一些测试图像的输出如下所示: Output 1

output 2

Output 3

我从中创建了正样本的图像: positive image

我有一些疑问/疑问,需要一些建议来改进或修改我的分类器。

1)我是否需要使用多个图像作为正图像来创建样本?

2)为什么我无法检测到上面图像中的所有交通信号?

3)我在图像形状或其他方面做错了吗?

4)如果我错了,请在这一点上纠正我 - 在交通信号上绘制一个矩形,我使用cv2.rectangle函数并提供恒定的高度/宽度参数,这就是它绘制一个大的唯一原因矩形,无论我的交通信号在图像中的距离/远近!是否有动态更改此大小的建议?

谢谢。

1 个答案:

答案 0 :(得分:1)

对我来说,看起来你的网络还没有学到足够的东西。

1)我强烈建议拍摄20-50个红绿灯样本,而不是一个样本。您仍然可以使用它们生成数千个样本进行培训。

2)最有可能是因为训练不足,但你也应该检查检测阶段的参数。您为检测设置的最小和最大尺寸是多少?

3)您不必重新塑造或重新调整图像大小,因此这不应成为问题。

  1. 检测器返回检测到的所有对象的位置(x,Y)和大小(宽度,高度)。因此,您应该能够动态更改大小,而不是使用恒定的宽度和高度。请参考Haar人脸检测的opencv示例,使用您选择的语言。