【A340】基于Pyhon+OpenCV的转向辅助和车道偏离监控的车道检测

2021-12-13 20:47:14      索炜达电子      666     

文件编号:A340

文件大小:34M

开发环境:Python3.6、OpenCV3.4.x

猿创承诺:该项目亲测正常运行,需远程调试部署需另外收费,确保正常使用,不能正常使用全额退款。

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

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

先决条件:

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

-Python 3.6 or higher

-OpenCV 3 or higher

-Numpy 1.14 or higher

-Scipy 1.1 or higher

工作原理:

laneDetection提供了一个包含汽车在公路上行驶的dashcam画面的视频文件。py按照模块化的方法,Python脚本有几个函数来执行车道检测。

图像处理

readVideo()

首先是readVideo()函数,用于访问视频文件驱动器。位于同一目录中的mp4。

processImage()

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

perspectiveWarp()

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

正在处理的帧的不同阶段(左),鸟瞰视图(右)

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

plotHistogram()

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

显示白色像素峰值的直方图

slide_window_search()

滑动窗口方法用于检测车道及其曲率。它使用上一个直方图函数中的信息,并在中间放置一个带有车道的框。然后根据上一个框中白色像素的位置将另一个框放在顶部,并将其自身相应地一直放置到帧的顶部。这样,我们就有了进行一些计算的信息。然后,执行二次多项式拟合以在像素空间中具有曲线拟合。

general_search()

在运行slide_window_search()函数后,这个通用的_search()函数现在能够填充检测到的车道周围的区域,再次应用二次多边形拟合,然后绘制一条黄线,该黄线与车道非常精确地重叠。这条线将用于测量曲率半径,这对于预测转向角至关重要。

measure_lane_curvature()

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

滑动窗口搜索功能可视化(左),常规搜索功能可视化(右)

可视化与主要功能

draw_lane_lines()

从这里开始,应用一些方法来可视化检测到的车道和其他信息,以便为最终图像显示。此特定功能采用检测到的车道,并用绿色填充车道内的区域。它还通过获取左fitx和右fitx列表的平均值并将其存储在pts_mean变量中(然后用淡黄色表示)来可视化车道中心。该变量还用于计算车辆到任意一侧的偏移量或车辆在车道中心的偏移量。

offCenter()

函数使用pts_mean变量计算偏移值,并以米为单位显示。

addText()

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

main()

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

定稿图像

图像处理阶段

【A340】基于Pyhon+OpenCV的转向辅助和车道偏离监控的车道检测

按需写作:

【A340】基于Pyhon+OpenCV的转向辅助和车道偏离监控的车道检测

演示视频:

【A340】基于Pyhon+OpenCV的转向辅助和车道偏离监控的车道检测

点击查看:系统演示视频

运行界面:

【A340】基于Pyhon+OpenCV的转向辅助和车道偏离监控的车道检测

远程协助:

温馨提示:索炜达.猿创官方提供收费远程协助,确保您项目运行成功。

点击查看:远程协助相关事项

我们提供完整项目文件清单如下:

文件目录

 ├ 1.项目源码

 ├ 2.运行截图

 └ 3.演示视频

TAG车道偏离
  • 4 次
  • 900 分