无人驾驶--交通标志检测实战(付源码)

本文介绍了一个使用OpenCV进行无人驾驶中交通标志检测的项目,通过图像增强、颜色阈值筛选和MSER算法,对交通标志进行检测和形状分类。该项目适用于无GPU设备,提供了GitHub源码和实际效果展示,旨在为他人学习提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

做完项目后写了个技术小结,为他人学习提供参考。
另外建了一个无人驾驶方面的微信交流群,有兴趣的朋友可以加我微信:wxl609278502 请注明: 姓名-单位/学校
项目描述:
使用opencv实时处理车载摄像机采集的道路图像,检测道路交通标志牌,并对交通标志牌进行形状分类,为下一步的交通标志识别提供检测基础。
此项目使用的传统计算机视觉的方法,针对的是没有GPU设备的项目。相对深度学习的交通标志检测和分类存在鲁棒性不够高的问题。
基于深度学习的交通标志牌的检测和分类 会在后续博文中进行整理。
项目代码GitHub地址:https://github.com/xlwang123/Self-Driving_Projects
付几张交通标志检测的效果图:

在这里插入图片描述 在这里插入图片描述
原图 增强图
在这里插入图片描述 在这里插入图片描述
阈值处理 几何判断

测试地点:南京

软硬件要求

  1. 普通车载记录仪(要求畸变不严重,对于畸变严重的需要进行图片校正)
  2. 工控机(带GPU更好,没有GPU也无所谓)
  3. Ubuntu16.04 + opencv3.2

交通标志牌检测流程

  1. 基于红黄蓝三色的交通标志牌图像增强
  2. 基于颜色筛选感兴趣目标
  3. MSER 最大极值稳定区域
  4. 基于几何不变矩的颜色筛选
  5. 结果输出

图像增强

基于三色颜色增强算法,对交通标志牌特有的颜色进行增强,非交通标志牌的颜色进行抑制。

def color_enhance(img):
    height = img.shape[0]
    weight = img.shape[1]
    channels = img.shape[2]
    print("weight : %s, height : %s, channel : %s" % (weight, height, channels))
    for row in range(height):
        for col in range(weight):
            r = img[row, col, 0]
            g = img[row, col, 1]
            b = img[row, col, 2]
            if ((r > 100) & (g > 100) & (b > 100)) | ((abs(r - b) < 25) & (abs(r - g) < 25) & (abs(g - b) < 25) | (
                    (b > g) & (b > r) & (r < g) & (r > 2 * b))):
                img[row, col, :] = 0
            if (2 * (r - g) < (r - b)) & (b > g) & (r > b):
                img[row, col, :] = 0
    return img

颜色增强效果前后对比如图所示:

在这里插入图片描述 在这里插入图片描述
增强前 增强后

颜色阈值筛选

基于红色、黄色、蓝色的HSV阈值进行交通标志的筛选。

def color_select(img):
    lower_blue = np.array([100,40,40])
    upper_blue = np.array([130,255,255])
    lower_yellow = np.array([15,55,55])
    upper_yellow = np.array([50,255,255])
    lower_red1 = np.array([0, 43, 46])
    upper_red1 = np.array([10, 255, 255])
    lower_red2 = np.array([156, 43, 46])
    upper_red2 = np.array([180, 255, 255])
    hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
    mask_blue = cv2.inRange(hsv, lower_blue, upper_blue)
    mask_yellow = cv2.inRange(hsv, lower_yellow, upper
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值