实时交通标志检测和分类(附代码)

简介与效果

本项目是一个基于 OpenCV 的交通标志检测和分类系统,可以在视频中实时检测和分类交通标志。检测阶段使用图像处理技术,在每个视频帧上创建轮廓并找出其中的所有椭圆或圆形。它们被标记为交通标志的候选项。
实时交通标志检测和分类(附代码)_第1张图片

检测策略:

  1. 增加视频帧的对比度和动态范围
  2. 增加视频帧的对比度和动态范围
  3. 使用 HSV 颜色范围删除不必要的颜色,如绿色
  4. 使用高斯拉普拉斯算子显示对象的边缘
  5. 通过二值化生成轮廓
  6. 检测椭圆状和圆形状的轮廓

在接下来的分类阶段,根据候选项的坐标从原始帧中裁剪出一组图像。预先训练的 SVM 模型将对这些图像进行分类,以确定它们属于哪种类型的交通标志。
实时交通标志检测和分类(附代码)_第2张图片

所有属于类别 8 及以上的标志都被标记为“其他”,因为这是一个竞赛的要求。还有一个类别 0,被标记为非交通标志。只有当前帧中最大的标志被裁剪和分类。

SVM 模型在每次调用 main.py 时进行训练,但我仍然保存该模型在 data_svm.dat 中,以便在未来实现模型重新加载功能,避免重新训练。

如果检测到交通标志,它将被跟踪,直到它消失或者帧中出现更大的标志。跟踪方法是稠密光流法。

环境搭建与文件介绍

  1. 先决条件: Python 3.5 OpenCV3 Imutils(使用 pip3 install imutils 安装)
  2. 系统结构 a. 有 3 个 Python 文件作为 3 个模块: main.py:程序的起始点。
    classification.py:用于分类交通标志的 SVM 模型。 common.py:用于定义 SVM 模型的函数。
  3. 其他文件: data_svm.dat:训练后保存的 SVM 模型。

安装

有两种运行程序的方式

  1. Use default arguments:
$python3 main.py
  1. Use custom arguments:
    使用默认参数:
$python3 main.py
optional arguments:
  -h, --help            show this help message and exit
  --file_name FILE_NAME
                        Video to be analyzed
  --min_size_components MIN_SIZE_COMPONENTS
                        Min size component to be reserved
  --similitary_contour_with_circle SIMILITARY_CONTOUR_WITH_CIRCLE
                        Similarly to a circle

结论与效果展示

我们使用GTSRB数据集训练了两个不同的模型来检测和识别交通标志。在测试数据集上,我们的模型表现出了良好的准确性和鲁棒性。未来,我们将继续改进我们的模型,以提高其在各种环境下的性能。效果展示 代码可私信

你可能感兴趣的:(小白学视觉,交通标识识别,目标检测,毕业设计代码)