文章目录

  • 前言
  • 一、虚实线的检测
  • 二、黄白线的检测

前言

针对传统图像处理方法的车道线检测,提出黄白、虚实车道线的区别。之前的算法流程及代码参考:https://blog.csdn.net/m0_46988935/article/details/109234900

一、虚实线的检测

  • 车道线的线形主要有虚线和实线,但大多数车道线检测算法对这两者并不进行区分。然而在对道路环境进行感知中,虚线和实线的区分具有非常重要的作用,区分两者有利于车辆进一步推断自身所在环境,比如在车道保持算法中对虚线和实线的偏离预警应有不同的策略。
  • 而我在车道线的检测过程中基于虚线与实线的几何特征对这二者进行了区分。因为使用霍夫变换算法检测到的车道线返回的值是车道线的起点与终点的坐标,根据实际情况可知实线的长度要大于虚线的长度,因而推断出可计算检测到的车道线的长度对实线与虚线进行区分。但是为了减少计算量,我选择了计算检测到的车道线的起点与终点坐标在 y 方向上的差值以替换长度值来实现区分。
  • 假设在一帧中检测到的某条车道线的起点和终点坐标分别为 (x1,y1) 和 (x2,y2),经过这两个坐标的直线的斜率为 slope,具体算法过程如下:
    • 根据直线斜率 slope 的正负判断检测的车道为左车道还是右车道。
    • 对于左右 2 条车道,分别计算y1 与 y2 差值的绝对值,并将该长度与阈值 Threshold(我给定的是60)进行比较,若大于该阈值,则判定为实线;否则为虚线。

具体代码如下:

def solid_dotted_judge(frame, lines):if len(lines) > 0:for line in lines:slope, x1, y1, x2, y2 = linek = abs(y2 - y1)font = cv.FONT_HERSHEY_SIMPLEX# 右车道线if slope >0:if k >= 60:cv.putText(frame, 'Right Solid', (int((x1 + x2) / 2)+50, int((y1 + y2) / 2)), font, 0.5, (0, 255, 0), 2)else:cv.putText(frame, 'Right Dotted', (int((x1 + x2) / 2)+50, int((y1 + y2) / 2)), font, 0.5, (0, 255, 0), 2)# 左车道线else:if k >= 60:cv.putText(frame, 'Left Solid', (int((x1 + x2) / 2)+50, int((y1 + y2) / 2)), font, 0.5, (0, 255, 0), 2)else:cv.putText(frame, 'Left Dotted', (int((x1 + x2) / 2)+50, int((y1 + y2) / 2)), font, 0.5, (0, 255, 0), 2)

二、黄白线的检测

  • 首先我们需要了解HSV颜色空间个颜色参数值,

    从上表可以得知,将颜色空间从 RGB 转成 HSV 后,白色的 S (饱和度)参数值介于 [0,30] 之间,而黄色的 S 参数介于 [43,255] 之间,两者存在着清晰的界限,在假定只有黄白车道线的前提下,只要判定某一像素点的 S 参数值大于 40,那么就可以认为该点为黄点。进而,在检测出的车道线上取若干(以 11 为例)个点分别判断 S 值,如果黄点的个数超过阈值(以 4 为例),则判定该线为黄线,否则判断为白线。
def color_judge(frame, frame1, lines):frame2 = cv.cvtColor(frame, cv.COLOR_BGR2HSV)L = []if len(lines) > 0:for i in range(len(lines)):L.append(lines[i])for line in L:# print(line)slope, x1, y1, x2, y2= linep = 0for i in range(1, 11):y = int(y1 + (y2 - y1) * i / 11)x = int(x1 + (x2 - x1) * i / 11)# print(x, y)h, s, v = frame2[y][x]if s > 40:p += 1if p >= 3:font = cv.FONT_HERSHEY_SIMPLEXcv.putText(frame1, 'Yellow', (int((x1 + x2) / 2), int((y1 + y2) / 2)), font, 0.5, (0, 255, 255), 2)else:font = cv.FONT_HERSHEY_SIMPLEXcv.putText(frame1, 'White', (int((x1 + x2) / 2), int((y1 + y2) / 2)), font, 0.5, (255, 255, 255), 2)

传统车道线检测之黄白线、虚实车道线检测(附python代码)相关推荐

  1. 一文详解8种异常检测算法(附Python代码)

    文章目录 一.异常检测简介 1.1 异常检测适用的场景 1.2 异常检测存在的挑战 二.异常检测方法 2.1 基于聚类的方法 2.2 基于统计的方法 2.3 基于深度的方法 2.4 基于分类模型 2. ...

  2. 基于深度学习的花卉检测与识别系统(YOLOv5清新界面版,Python代码)

    摘要:基于深度学习的花卉检测与识别系统用于常见花卉识别计数,智能检测花卉种类并记录和保存结果,对各种花卉检测结果可视化,更加方便准确辨认花卉.本文详细介绍花卉检测与识别系统,在介绍算法原理的同时,给出 ...

  3. 阵列天线方向图合成(线阵、面阵)-附Python代码

    阵列天线波束赋形 导向矢量 ULA线阵: a = 1 N [ 1 , e − j 2 π λ d cos ⁡ θ , ⋯ , e − j 2 π λ ( N − 1 ) d cos ⁡ θ ] T \ ...

  4. 独家 | 每个数据科学家应该知道的五种检测异常值的方法(附Python代码)

    作者:Will Badr 翻译:顾伟嵩校对:欧阳锦本文约1600字,建议阅读5分钟本文介绍了数据科学家必备的五种检测异常值的方法. 无论是通过识别错误还是主动预防,检测异常值对任何业务都是重要的.本文 ...

  5. 【图像检测】基于形态学实现图像目标尺寸测量系统附matlab代码

    1 简介 介绍了一种基于机器视觉技术的目标外观尺寸检测系统.,通过数字图像处理技术获取柚子的纵径,横径,表面积等外观尺寸参数. 2 部分代码 coin_width=1.1000;coin_height ...

  6. 深度学习目标检测系列:一文弄懂YOLO算法|附Python源码

    在之前的文章中,介绍了计算机视觉领域中目标检测的相关方法--RCNN系列算法原理,以及Faster RCNN的实现.这些算法面临的一个问题,不是端到端的模型,几个构件拼凑在一起组成整个检测系统,操作起 ...

  7. 蓝绿黄车牌识别(附Python代码)

    首发于https://juejin.cn/post/6924213303124164621,转载注明出处 GitHub https://github.com/KinghooWei/LicensePla ...

  8. MATLAB算法实战应用案例精讲-【图像处理】小目标检测(补充篇)(附python代码实现)

    目录 前言 常用数据集及性能评估 数据集 性能评估 改进方向 小目标检测分类

  9. 如何使用 Python 检测和识别车牌(附 Python 代码)

    文章目录 创建Python环境 如何在您的计算机上安装Tesseract OCR? 技术提升 磨砺您的Python技能 车牌检测与识别技术用途广泛,可以用于道路系统.无票停车场.车辆门禁等.这项技术结 ...

  10. 【实战案例】分享6种常用的信用卡欺诈检测算法(附 Python 代码)

    大家好,本文旨在使用 XGBoost.随机森林.KNN.逻辑回归.SVM 和决策树解决信用卡潜在欺诈的分类问题,内容较长,建议收藏.点赞. 文章目录 技术提升 案例简介 导入相关模块 导入数据 探索性 ...

最新文章

  1. CIR,CBS,EBS,PIR,PBS傻傻分不清楚?看这里!—-揭秘令牌桶
  2. 【Paper】23_[14]A Decentralized Approach to Formation Maneuvers
  3. vb6 打印选项对话框_办公必备技能,Word打印问题及解决方案全在这,轻松解决打印难题...
  4. SQL 数据库远程备份 语句
  5. matlab中获取view,ios 怎么获取一个view的位置
  6. maven java 结构_Maven标准目录结构介绍
  7. 浏览器插件----神奇的鼠标
  8. 字节跳动异构场景下的高可用建设实践
  9. SpringBoot实战(十三):Spring Boot Admin 动态修改日志级别
  10. 如何在centos7上安装源码包
  11. 每日英语:6 Brainy Habits of the Wisest People
  12. android 手机邮件发不出去,Android中小弟我为什么发不了邮件-Android邮件发送详解...
  13. VC2005用不惯呀....
  14. 显示器突然黑屏怎么办
  15. 关于Linux UDP/TCP reuseport 二三事
  16. C++ - priority_queue
  17. 如何将CM android移植到你的设备(二)
  18. 区块链技术应用于链接智慧医疗
  19. python数据收集整理教案_《数据收集整理》教学设计
  20. 如何获得更好的交互体验_制定更好的用户体验决定的4条聪明的心理学规则

热门文章

  1. PS画实线、虚线箭头
  2. 体检信息管理系统功能表
  3. BZOJ1299 巧克力棒
  4. 【深度学习笔记】理解Bicubic,双三次插值
  5. RE文件管理器如何获取小程序APKG文件
  6. P2P银行卡绑定(银行卡四要素)
  7. 5个简单的游戏设计技巧,让你的游戏更有趣
  8. Python教程:while 循环用法讲解
  9. iOS系统字体大全,iOS系统中所有的字体
  10. 赛事相关 | 腾讯觅影×腾讯云TI平台,锁了