python车道线检测道路偏离提示检测车道线直行左右转弯

项目描述和目标

这个项目旨在演示车道检测系统如何在配备前置摄像头的汽车上工作。该系统在越来越多的车辆中占据一席之地,是自动/半自动车辆中使用的高级驾驶员辅助系统(ADAS)的重要组成部分。该功能负责检测车道、测量曲线半径(曲线的紧密度)并监控从中心的偏移。有了这些信息,该系统通过确保车辆在车道线内居中而显著提高了安全性,并且如果它还被配置为在没有任何驾驶员输入的情况下控制方向盘在高速公路上进行平缓转弯,则增加了舒适性。这是生产车辆中使用的简化版本,如果提供良好的条件(清晰的车道线、稳定的光线条件),则功能最佳。在这个存储库中,包含了一个dash cam镜头,供脚本使用。

效果视频:

python车道线检测道路偏离提示检测直行车道线左右转弯辅助驾驶

 

启动并运行这个项目

就如何运行而言,该项目遵循一种简单化的方法。只需要2个文件就可以让它运行。

  • 道路检查是执行图像处理和车道检测的唯一文件
  • 视频是执行图像处理的视频文件。

只需通过启动命令提示符并运行

确保两个文件(laneDetection.py和drive.mp4)在同一个目录中。

先决条件

要成功运行项目,需要安装以下软件及其各自的版本:

  • Python 3.6或更高版本(https://www.python.org/downloads/)
  • OpenCV 3或更高版本(将由脚本使用,可以使用pip下载)
  • Numpy 1.14或更高版本(将由脚本使用,可以使用pip下载)
  • Scipy 1.1或更高版本(将由脚本使用,并且可以使用pip下载)

依赖性和环境

应该指出的是,这个项目是在微软Windows 10 (64位)机器上开发的,但是,它应该也可以在其他平台上工作,只需在这里或那里做一些小的调整。至于Python包,请遵循上一节(先决条件)中的说明,以获得正确版本的依赖项。

代码如何工作

为脚本提供了一个视频文件,其中包含一辆汽车在高速公路上行驶的dashcam镜头laneDetection.py遵循模块化方法,Python脚本具有多个函数来执行车道检测。

图像处理

readVideo()

首先是readVideo()函数来访问视频文件drive.mp4它位于同一个目录中。

processImage()

该函数执行一些处理技术来隔离白色车道线,并为后续函数的进一步分析做准备。基本上,它应用HLS颜色滤波来滤除帧中的白色,然后将其转换为灰度,然后应用阈值处理来去除除车道之外的不必要的检测,变得模糊,最后用cv2提取边缘。Canny()函数。

透视扭曲()

现在我们有了我们想要的图像,一个透视扭曲被应用。在框架上放置4个点,使得它们仅围绕车道所在的区域,然后将其映射到另一个矩阵,以创建一个鸟瞰车道。这将使我们能够处理更精细的图像,并帮助检测车道曲率。请注意,如果使用另一个视频,此操作可能会发生变化。预定义的4个点是根据这个特定的镜头计算的。如果另一个视频有一个稍微不同的角度相机,它应该被重新调整。

车道检测、曲线拟合和计算

plotHistogram()

绘制图像下半部分的直方图是获得左右车道确切起始位置信息的重要部分。在分析直方图时,可以看到有两个不同的峰值,在这两个峰值处检测到所有的白色像素。这是左右车道起点的一个很好的指示器。由于直方图x坐标表示我们分析的帧的x坐标,这意味着我们现在有x坐标来开始搜索车道。

常规搜索()

在运行slide_window_search()函数之后,这个general_search()函数现在能够填充这些检测到的车道周围的区域,再次应用二次多项式拟合,然后绘制一条与车道非常精确地重叠的黄线。这条线将用于测量曲率半径,这在预测转向角时是必不可少的。

测量_车道_曲率()

利用前两个函数提供的信息,再次使用np.polyfit()函数,但是将值乘以xm_per_pix和ym_per_pix变量,以将它们从像素空间转换到米空间。xm_per_pix被设置为3.7 / 720,其车道宽度为3.7米,并且从直方图获得的左和右车道基底x坐标对应于以像素为单位的车道宽度,其结果是大约720个像素。类似地,ym_per_pix被设置为30 / 720,因为帧高度是720。

可视化和主要功能

绘制_车道_线条()

从这里开始,应用一些方法来可视化检测到的车道和其他信息,以便为最终图像显示。这个特殊的函数获取检测到的车道,并用绿色填充车道内的区域。它还通过取left_fitx和right_fitx列表的平均值并将它们存储在pts_mean变量中来可视化车道的中心,然后用黄色表示。该变量也用于计算车辆向两侧的偏移或车辆在车道中心的偏移。

偏心()

offCenter()函数使用pts_mean变量来计算偏移值,并将其显示在仪表空间中。

addText()

最后,通过在最终图像上添加文本,将完成该过程并显示信息。

主()

Main函数是按正确顺序调用所有这些函数的地方,它包含播放视频的循环。

 项目下载:https://download.csdn.net/download/babyai996/87713232

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

babyai997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值