0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于 OpenCV 的车辆变道检测

电子设计 来源:电子设计 作者:电子设计 2020-12-08 23:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

文章转载于微信公众号:小白学视觉
作者: 努比

本期教程我们将和小伙伴们一起研究如何使用计算机视觉和图像处理技术来检测汽车在行驶中时汽车是否在改变车道!大家一定听说过使用OpenCV 的haar级联文件可以检测到面部、眼睛等,但是如果目标是汽车,公共汽车呢?

01. 数据集

我们将道路上汽车的视频文件用作数据集。当然可以使用图像数据集检测来汽车,但是由于汽车在变道时我们需要通过弹出窗口提供警报,因此对于这些动态情况,视频输入更为可行。

02. 输入

第一步是提供要在本教程中使用的输入-OpenCV的haar级联文件,用于检测汽车的坐标,道路上的汽车的视频文件-

cascade_src = 'cascade/cars.xml'

cv2.VideoCapture()方法用于捕获输入视频,视频通常为每秒25个图像/帧(fps)。捕获输入后,使用循环提取帧,并使用汽车的haar级联文件检测到的坐标,我们在循环中在汽车周围绘制一个矩形,以在对捕获的帧执行其他操作时获得一致性。

while(1):

在OpenCV中,使用BGR而不是RGB,因此(0,0,255)将在汽车上绘制一个红色矩形,而不是蓝色。

03. 图像处理

如果帧的分辨率很高,则会减慢执行的操作,此外,该帧还包含噪声,可以使用模糊降低噪声,这里使用高斯模糊。

3.1 HSV框架

在此,我们使用从cv2.VideoCapture()捕获的帧中获得的HSV帧仅突出显示汽车转弯的点,并遮挡其余道路和在道路上直行的汽车。设置上限和下限阈值是为了定义HSV中的颜色范围,以查看汽车改变车道的点,并用作框架的遮罩。以下是用于获取此代码的代码段-

3.2腐蚀与膨胀

腐蚀和膨胀是图像处理中常使用的两个基本形态学操作。腐蚀算子在内核区域上具有局部最小值的作用。腐蚀用于减少图像中的斑点噪声,斑点会从图像中的对象边界腐蚀掉。膨胀具有局部最大值运算符的作用。当添加像素以平滑图像中对象的边界时,将使用膨胀来重新获得一些丢失的区域。现在,通过基本形态学操作(腐蚀和膨胀)处理从HSV帧的第一步生成的蒙版。通过将帧和掩码之间的按位与运算应用于获取 ROI(感兴趣区域),可以生成结果帧。

    kernel = np.ones((3,3),np.uint8)

3.3车道检测

canny边缘检测器与霍夫线变换一起用于检测车道。


canny边缘检测(作者提供的图像)

04. 边缘检测

诸如canny边缘检测器之类的算法用于查找将图像中的边缘像素,但是由于我们无法融合某些点和边缘,因此它无法找到实际对象,在这里我们可以使用OpenCV中的cv2.findContours()实现轮廓的查找。

定义-“轮廓是代表图像中曲线的点的列表。”等高线由序列表示(序列是结构的链表),每个序列都编码有关下一点位置的信息。我们在ROI中多次运行cv2.findContours()以获得实体,然后使用cv2.drawContours()绘制轮廓区域。等高线可以是点,边,多边形等,因此在绘制等高线时,我们进行多边形近似,以找到边的长度和区域的面积。函数cv2.drawContours()的工作方式是从根节点开始绘制一棵树(数据结构),然后将后续点,边界框和freeman链代码连接在一起。

找到轮廓后的另一个重要任务是匹配它们。轮廓匹配意味着我们有两个单独的计算轮廓相互比较,或者轮廓与抽象模板相比较。

thresh = mask

05. 中心

我们可以通过计算轮廓矩来比较两个轮廓。“中心矩是通过将轮廓的所有像素相加而得出的轮廓的总体特征。”

中心矩型-

  • 空间矩:m00,m10,m01,m20,m11,m02,m30,m21,m12,m03。
  • 中心矩:mu20,mu11,mu02,mu30,mu21,mu12,mu03。
  • Hu矩:有七个Hu矩(h0 — h6)或(h1 — h7),两种表示法都使用。

我们使用cv2.fitEllipse()计算矩并将椭圆拟合在这些点上。从轮廓和力矩中得出角度,因为改变车道需要45度旋转,这被认为是汽车转弯角度的阈值。

现在,我们不仅可以打印检测变化的车道,还可以使用Tkinter作为一个简单的弹出窗口来提醒更改。

使用Greenline测量角度,并在框架中的汽车上绘制矩形

弹出警报(作者提供的图片)


输出

06. 总结

在本教程中,使用车道变更检测方法探索了智能汽车导航的小型演示。计算机视觉正在迅速发展,其应用不仅在汽车的本地导航中而且在火星导航和产品检查领域中也在不断发展,甚至医疗应用也正在开发中,并可以在早期用于检测X射线图像中的癌症和肿瘤阶段。

代码链接:https://github.com/Hitesh-Val.../_Opencv

参考文献:

  1. Bradski, Gary and Kaehler, Adrian_,_Learning OpenCV: Computer Vision in C++ with the OpenCV Library, O’Reilly Media, Inc., 2nd edition, 2013, @10.5555/2523356, ISBN — 1449314651.
  2. Laganiere, Robert, OpenCV Computer Vision Application Programming Cookbook, Packt Publishing, 2nd edition, 2014, @10.5555/2692691, ISBN — 1782161481.

推荐阅读

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    91

    文章

    41101

    浏览量

    302576
  • 深度学习
    +关注

    关注

    73

    文章

    5607

    浏览量

    124618
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HLK-LD2417车辆状态检测模组,让车辆感知更智能

    在智能交通和车路协同快速发展的今天,如何精准感知车辆状态成为众多应用场景的核心需求。海凌科电子推出HLK-LD241724GHz车辆状态检测模组,基于FMCW调频连续波技术,可实现最远100m的
    的头像 发表于 03-16 16:56 342次阅读
    HLK-LD2417<b class='flag-5'>车辆</b>状态<b class='flag-5'>检测</b>模组,让<b class='flag-5'>车辆</b>感知更智能

    雷达车辆检测模组怎么选?

    在智能交通、车辆感知与安防监控等领域,毫米波雷达模组因其不受光照、天气影响,且能精准检测速度、距离等优势,逐渐成为关键传感器。深圳市海凌科电子推出的HLK-LD2417与HLK-LD2451均是
    的头像 发表于 02-03 15:33 515次阅读
    雷达<b class='flag-5'>车辆</b><b class='flag-5'>检测</b>模组怎么选?

    瑞芯微(EASY EAI)RV1126B 车辆检测

    1.车辆检测简介车辆检测是一种基于深度学习的对人进行检测定位的目标检测,能广泛的用于园区管理、交
    的头像 发表于 01-16 15:02 7908次阅读
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>车辆</b><b class='flag-5'>检测</b>

    没有专利的opencv-python 版本

    ) 视频处理 视频读取/写入、帧提取、运动检测(背景差分) 绘图功能 画直线/矩形/圆、添加文字、标注关键点 关键总结: 对 Python 3.13 来说,最优选择是安装 opencv
    发表于 12-13 12:37

    什么是倍镜头

    什么是倍镜头倍镜头是一种可以连续调节放大倍率或视场范围的光学镜头。它通过内部光学组的相对移动,实现倍率/焦距的连续变化,而且需要保证在倍过程中成像仍然清晰、畸变小。特点:适合需要多倍率观察
    的头像 发表于 12-01 15:31 778次阅读
    什么是<b class='flag-5'>变</b>倍镜头

    循环发动机高工况适应性几何分流环设计:前缘/壁面型线影响规律与优化策略

    循环发动机作为一种创新的航空动力系统,其核心特征在于采用三涵循环气动热力布局,通过精巧调节多个几何部件,实现在不同飞行状态下的性能最优化。这种发动机的流
    的头像 发表于 11-19 15:05 827次阅读
    <b class='flag-5'>变</b>循环发动机高工况适应性<b class='flag-5'>变</b>几何分流环设计:前缘/壁面型线影响规律与优化策略

    机器视觉双雄YOLO 和 OpenCV 到底有啥区别?别再傻傻分不清!

    如何在深圳市钡铼技术有限公司的AI边缘计算产品中结合,实现真正的“视觉智能”。 一、前言:为什么总有人把YOLO和OpenCV搞混? 在AI视觉项目中,你可能听过这样的讨论:“要做人脸检测,我用OpenCV。”“不对,用YOLO
    的头像 发表于 10-14 16:00 1703次阅读
    机器视觉双雄YOLO 和 <b class='flag-5'>OpenCV</b> 到底有啥区别?别再傻傻分不清!

    零成本钢铁侠手套!树莓派+OpenCV手势遥控器!

    使用树莓派和OpenCV实时扫描并存储二维码使用树莓派和OpenCV实现物体与动物识别使用树莓派、摄像头和OpenCV进行速度检测用树莓派+Open
    的头像 发表于 08-16 16:16 1560次阅读
    零成本钢铁侠手套!树莓派+<b class='flag-5'>OpenCV</b> 秒<b class='flag-5'>变</b>手势遥控器!

    如何使用树莓派与OpenCV实现面部和运动追踪的云台系统?

    使用树莓派和OpenCV实时扫描并存储二维码使用树莓派和OpenCV实现物体与动物识别使用树莓派、摄像头和OpenCV进行速度检测用树莓派+Open
    的头像 发表于 08-14 17:45 2387次阅读
    如何使用树莓派与<b class='flag-5'>OpenCV</b>实现面部和运动追踪的云台系统?

    如何使用树莓派+OpenCV实现姿态估计和面部特征点追踪?

    使用树莓派和OpenCV实时扫描并存储二维码使用树莓派和OpenCV实现物体与动物识别使用树莓派、摄像头和OpenCV进行速度检测今天是第一部分:使用树莓派与Op
    的头像 发表于 08-13 17:44 1463次阅读
    如何使用树莓派+<b class='flag-5'>OpenCV</b>实现姿态估计和面部特征点追踪?

    如何板端编译OpenCV并搭建应用--基于瑞芯微米尔RK3576开发板

    本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的板端编译OpenCV及环境搭建方案的开发测试。摘自优秀创作者-短笛君 RK3576具有如下配置: 4
    发表于 08-08 17:14

    请问49通的触摸芯片CMS32F759/737可靠性怎么检测的?

    请问49通的触摸芯片CMS32F759/737可靠性怎么检测的?
    发表于 07-30 16:33

    智慧解锁:4G工业路由器如何助力智能车辆识别

    随着智慧城市和自动化基础设施的不断普及,车辆在门禁闸的识别与管理对于提升安防效率变得尤为重要。4G工业路由器作为智能闸系统的核心,能够为现场设备与中央管理平台之间提供高速、可靠和安全的实时数据传输。本文将介绍深圳惠志科技的4
    的头像 发表于 07-25 11:25 858次阅读
    智慧解锁:4G工业路由器如何助力智能<b class='flag-5'>道</b>闸<b class='flag-5'>车辆</b>识别

    【Milk-V Duo S 开发板免费体验】SDK编译、人脸检测OpenCV测试

    【Milk-V Duo S 开发板免费体验】SDK编译、人脸检测OpenCV测试 本文介绍了 Milk-V Duo S 开发板实现 Buildroot SDK 镜像编译、基于 TDL 模型的人
    发表于 07-11 13:48

    基于RK3576开发板的车辆检测算法

    车辆检测是一种基于深度学习的对人进行检测定位的目标检测,能广泛的用于园区管理、交通分析等多种场景,是违停识别、堵车识别、车流统计等多种算法的基石算法。
    的头像 发表于 05-08 17:34 1628次阅读
    基于RK3576开发板的<b class='flag-5'>车辆</b><b class='flag-5'>检测</b>算法