yolov5+车道线检测

news2024/11/23 19:22:49

        目标检测与车道线检测在自动驾驶以及车辆定位中起着重要的辅助作用,是环境感知中不可缺少的一个部分。基于深度学习的车道线检测方法近年来也在不断的提升,比如论文:Ultra Fast Deep Lane Detection with HybridAnchor Driven Ordinal Classification.该论文是提出了一种基于anchor的车道线检测方法,这种方法借鉴了目标检测的思想,预设定了anchor,比基于图像分割的车道线检测方法在速度上有很大的提升。到考虑到如果算法均采用深度学习方法,在最终算法落地的时候对于模型优化是比较高的,而且有些模型在参数和计算量上都比较大,因此本文采用深度学习的yolov5做为目标检测结合传统的图像处理方法做车道线检测

yolov5这部分不在详细展开,直接下载官方代码即可。重点是介绍车道线检测方法思路供大家学习。


主要步骤分四步:

1.颜色筛选

2.边缘检测

3.mask检测区域筛选

4.霍夫变换


yolov5+车道线检测

1.颜色筛选

        比如下面视频中,我们想先通过颜色筛选先对图像进行过滤,方法也很简单,就是通过设置阈值对RGB三通道先进行筛选。这个阈值也不是随便设置,教给大家一个方法。采用微信截图,然后把鼠标放到车道上面,记下RGB三通道的值即可【可以上下浮动调整,直到筛选出你较为满意的效果,注意opencv里的通道顺序是BGR】。过滤以后就如下所示。

2.边缘检测

        这里的边缘检测主要是检测车道线的边缘,采用的是Canny算子进行检测。在边缘检测之前需要先把图像转为灰度图,设置核的大小,一般设置为5,用高斯进行去噪处理后在采用Canny进行边缘检测。

def canny_edg_(img):
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转为灰度图像
    kernel_size = 5
    blur_gray = cv2.GaussianBlur(gray, (kernel_size, kernel_size), 0) # 高斯滤波
    low_thres = 160
    high_thres = 240
    edg_img = cv2.Canny(blur_gray, low_thres, high_thres)
    return edg_img

边缘检测的效果图如下所示 ,可以看到这里已经将车道线检测出来了【当然这里还有其他边缘】。

3.mask检测区域筛选

        这一步是很重要的,我们可以分析一下步骤二中的图,在道路环境中不仅仅有车道线,还有山体的轮廓等等,那有什么办法可以进一步筛选吗?答案是有的,可以看到车道线基本是位于画面的三分之二左右的位置上,上面的部分是不需要检测,所以如果我们可以创建一个mask把需要检测的区域保留下来即可。mask图像如下所示,可以看到已经把车道区域筛选出来了【这个区域可以做更细微的调整,比如设置一个比例值,我这里只是做个演示】

4.霍夫变换        

        接下来是通过霍夫变换获取车道线的坐标进行绘制,可以直接用opencv中现有的函数即可,即cv2.HoughLinesP ,同时还可以计算出左右车道线坐标【通过霍夫空间映射到笛卡尔空间,这里的m表示斜率,c表示截距,那么我们可以斜率判断车道线是左还是右】,最后通过cv2.line进行绘制即可。

                # 求直线方程斜率判断左右车道
                m = (y2 - y1) / (x2 - x1)
                c = y1 - m * x1
                if m < 0:  # 左车道
                    left_line.append((m, c))
                elif m >= 0:  # 右车道
                    right_line.append((m, c))

效果图就是下面这样的。如果还想检测的区域更长一些,可以调整mask区域即可【但也会引入其他的噪声】 。


然后可以将以上车道线检测应用于目标检测中, 我这里是放到了yolov5中,大家也可以尝试放在其他的目标检测算法后,也可以放在图像分割中都是可以的。

【yolov5+车道线检测】 


 本文仅供研究学习使用,暂时不放源码的原因是由于以前碰到过一些不讲信誉的公司让我非常气愤【比如格灵深瞳】。大家有兴趣学习交流的可以私信或者留言都可以

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Allegro如何Wavie DRC操作指导

Allegro如何Wavie DRC操作指导 在做PCB设计的时候,会因为规则设置的原因,导致出现很多DRC,不方便检查,Allegro支持直接Waive掉正常DRC,方便检查,如下图 芯片中心需要打过孔方便散热,但是这些过孔的DRC是不需要显示的 具体操作如下 选择Display选择 Waive DRCs

数据结构与算法3—栈

1. 栈的定义 栈&#xff0c;也叫堆栈&#xff0c;是最常用也是最重要的数据结构之一。栈(Stack)是限定仅在表的一端进行插入或删除操作的线性表&#xff0c;通常称插入、删除的这一端为栈顶(Top)&#xff0c;另一端为栈底(Bottom)。当表中没有元素时称为空栈。栈操作的特点&am…

【服务器数据恢复】StorNext文件系统数据恢复案例

服务器数据恢复环境&#xff1a; 昆腾系列存储&#xff0c;9个磁盘柜&#xff0c;每个磁盘柜配置24块硬盘。其中8个磁盘柜用于存储数据&#xff0c;1个磁盘柜用于存储元数据。上层使用的是StorNext文件系统。 存储元数据的磁盘柜中24块磁盘的分配情况&#xff1a;8组RAID1阵列1…

1361. 验证二叉树

目录题目思路代码题目 二叉树上有 n 个节点&#xff0c;按从 0 到 n - 1 编号&#xff0c;其中节点 i 的两个子节点分别是 leftChild[i] 和 rightChild[i]。 只有 所有 节点能够形成且 只 形成 一颗 有效的二叉树时&#xff0c;返回 true&#xff1b;否则返回 false。 如果节点…

开发小程序遇到的问题

1、小程序授权定位时报错 原因&#xff1a; 需要授权 scope.userLocation、scope.userLocationBackground 时必须配置地理位置用途说明。 解决&#xff1a; 在app.json中&#xff0c;根据开发文档的提示&#xff0c;将下面的代码添加在与pages同级下 "permission": {…

16年经验的通信行业测试人,后悔入错行了吗?

屏幕前的读者对于一个行业的兴衰有什么看法呢&#xff1f;非常很现实的说&#xff0c;我们所处的行业直接关系着每个人的收入&#xff0c;处于行业的不同生命周期内&#xff0c;我们拿到的钱也会不一样。下面用本人所处的行业举个例子。工作经历初入通信行业从我进入通信行业的…

什么是SPI?SPI的优点有哪些?

1、什么是SPI&#xff1f; SPI是串行外设接口&#xff08;Serial Peripheral Interface&#xff09;的缩写&#xff0c;是Motorola公司推出的一种同步串行接口技术&#xff0c;是一种高速、全双工、同步的通信总线。 2、SPI优点 支持全双工通信通信简单数据传输速率块 3、缺…

案例分析中可能的考点1:招投标程序

招投标程序&#xff1a; &#xff08;1&#xff09;投标方不满足资质要求&#xff1b; &#xff08;2&#xff09;投标过程不满足时间要求&#xff1b; &#xff08;3&#xff09;招标公告内容或过程不满足要求&#xff1b; &#xff08;4&#xff09;评标人员不满足组成要求&a…

【数据结构与算法】二叉树的非递归前中后序遍历

&#x1f320;作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《数据结构与算法要啸着学》 &#x1f387;座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;…

WebSphere8 批量安装和制作介质服务器

WAS 8.5 介质准备 1、安装install manager 2、安装IBM Packaging Utility unzip pu.offering.disk.linux_1.5.3000.20120531_2025.zip cd disk_linux/InstallerImage_linux ./consoleinst.sh 跟着向导安装。 3、安装PU mkdir pu cd pu unzip ../pu_1.5.3.zip ./imcl i…

如何使用集成在 SharePoint 中的开源 ONLYOFFICE 文档替代微软 Office

ONLYOFFICE 文档是一款开源的办公套件&#xff0c;在 GNU AGPL v3.0 下分发。它包括基于网络的查看器和协作编辑器&#xff0c;可用于处理文本文档、电子表格和演示文稿&#xff0c;与 OOXML 格式高度兼容。 ONLYOFFICE 文档可以与多种云服务集成&#xff0c;如 Nextcloud、ow…

仅CPU服务器pytorch ,torch_geometric安装配置

写在开头&#xff0c;做了整整三年的多组学数据分析&#xff0c;各种模式动物、组织、细胞系的各种组学数据&#xff0c;该怎么串联成我的论文&#xff1f;就是我要开启深度学习小白模式了。 万种流程先从环境配置开始&#xff0c;先说说环境&#xff0c;其实当家的有多GPU超大…

儿童护眼灯哪个好?四款儿童护眼台灯测评

儿童护眼灯在孩子的学习过程中起到了很重要的作用&#xff0c;53.7%的青少年们都有近视的现象&#xff0c;而好的台灯不仅照明非常柔和&#xff0c;而且对眼睛没有刺激和伤害&#xff0c;护眼灯相比传统电灯&#xff0c;一是古县更加明亮且可以调节&#xff0c;二是有护眼技术的…

HANA 的 calculation view出现模糊关联 ambiguous join

一旦我们用了join&#xff0c;那就会有个Analytic Engine分析引擎来确保不是唯一连接的时候&#xff0c;关键值不会被重复。 啥是模糊关联&#xff1f; 一般来讲关联基数是1&#xff1a;n, 或者n:1,或者 m:n都是。 以上两个关联&#xff0c;结果集如下&#xff1a; 这时候&a…

php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07

php学习笔记-php会话控制及web常用的预定义变量-day071、$_REQUEST2、$_SERVER3、$_COOKIE3.1 cookie的内容3.2 cookie的分类3.3 php中cookie的使用3.4 cookie自动登录小demo4、$SESSION4.1 session的工作原理4.2 session的使用4.2.1 修改php.ini中的session配置4.2.2 开启sess…

Android 深入系统完全讲解(13)

3 编译过程讲解 1 系统的编译过程 Android 的编译使用的 Makefile&#xff0c;推荐大家使用《GNU make 中文手册》&#xff0c;这本书有电子版&#xff0c;非常方便&#xff0c;主要是要理解清楚 Makefile 的规则&#xff0c;编译策略&#xff0c;可以通过写简单的编译机制&am…

【Java项目推荐】值得写到简历上的项目--黑马点评

优惠卷秒杀前言优惠券秒杀实现优惠券秒杀下单超卖问题一人一单分布式锁redis中加锁的一些特殊情况手动实现分布式锁分布式锁误删情况1分布式锁误删情况2lua脚本解决多条命令的原子性问题Redisson秒杀优化异步秒杀思路基于redis完成秒杀资格判断基于阻塞队列实现异步下单总结Red…

70、SSDNeRF: Semantic Soft Decomposition of Neural Radiance Fields

简介 官网&#xff1a;https://www.siddhantranade.com/research/2022/12/06/SSDNeRF-Semantic-Soft-Decomposition-of-Neural-Radiance-Fields.html SSDNeRF&#xff0c;将语义信号与场景的辐射信号联合编码&#xff0c;提供了场景的软分解为语义部分&#xff0c;能够正确编码…

【HCIA-openEuler】实验手册—09【openEuler综合实践】

文章目录一、实验介绍1、关于本实验2、实验目的二、实验任务配置1、配置思路2、配置步骤步骤1&#xff1a;挂载系统ISO&#xff0c;并配置好本地dnf源步骤2&#xff1a;配置软件安装源步骤3&#xff1a;安装文件共享服务三、设置文件共享用户与权限1、实验介绍&#xff08;1&am…

【Linux】编辑器 - vim 的使用与配置

目录 1、vim的基本概念 2、vim的基本操作 2.1、vim 编辑器的进入与退出 2.2、插入模式 2.3、命令模式 2.4、底行模式 3、vim的配置 3.1、自定义配置 3.2、自动化配置 vim 的前身是 vi&#xff0c;vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;…