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
    +关注

    关注

    87

    文章

    31096

    浏览量

    269417
  • 深度学习
    +关注

    关注

    73

    文章

    5507

    浏览量

    121266
收藏 人收藏

    评论

    相关推荐

    电动倍自动对焦显微镜:半导体芯片检测的精密之眼

    电动倍自动对焦显微镜,以其卓越的倍能力、高精度的观测效果以及智能化的操作体验,正逐步成为半导体芯片检测领域的新宠。它不仅提升了检测效率与质量,更为推动半导体产业的持续进步与创新发展
    的头像 发表于 12-30 10:33 99次阅读
    电动<b class='flag-5'>变</b>倍自动对焦显微镜:半导体芯片<b class='flag-5'>检测</b>的精密之眼

    WTR-562-X 雾区车辆检测雷达

    安装在道路侧面,检测断面垂直于道路断面,工作时发射探测波束,覆盖一定的区域,检测区域内车辆的存在。(详情见下载文件)
    发表于 12-26 15:10 0次下载

    WTR-565 车辆距离和速度测量雷达 彩页

    产品概述:WTR-565采用微波技术原理,可对检测区域内各类型机动车辆、非机动车辆进行全天候长距离检测,并分析反馈来车方向、来车距离、行驶速度等。除可应用于国道、省道、县乡
    发表于 12-13 10:56 0次下载

    TLV2553检测电压时,电压值越高,采集的精度越差,跳比较大,为什么?

    采用TLV2553作为电压检测,当检测电压低于7V时,检测精度为±0.03V,当电压超过7V时,检测的精度会逐渐变大,并且采集到的电压值跳
    发表于 12-11 07:44

    如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板

    本篇测评由优秀测评者“eefocus_3914144”提供。 本文将介绍基于米尔电子MYD-LMX93开发板(米尔基于NXP i.MX93开发板)的基于OpenCV的人脸检测方案测试。 OpenCV
    发表于 11-15 17:58

    基于OPENCV的相机捕捉视频进行人脸检测--米尔NXP i.MX93开发板

    本文将介绍基于米尔电子MYD-LMX93开发板(米尔基于NXPi.MX93开发板)的基于OpenCV的人脸检测方案测试。OpenCV提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置
    的头像 发表于 11-07 09:03 1122次阅读
    基于<b class='flag-5'>OPENCV</b>的相机捕捉视频进行人脸<b class='flag-5'>检测</b>--米尔NXP i.MX93开发板

    通过实时盲区检测提高车辆安全性

    车载汽车安全系统通过检测驾驶员盲区中是否存在相邻车辆,并警告驾驶员可能发生的事故来防止发生车祸。驾驶员可以使用此信息来安全地。在本文中,我们将讨论盲区
    的头像 发表于 08-30 16:39 1243次阅读
    通过实时盲区<b class='flag-5'>检测</b>提高<b class='flag-5'>车辆</b>安全性

    OpenCV图像识别C++代码

    安装OpenCV库 首先,您需要在您的计算机上安装OpenCV库。您可以从OpenCV官网下载预编译的库或从源代码编译。安装完成后,确保将OpenCV的头文件和库文件添加到您的项目中。
    的头像 发表于 07-16 10:42 2112次阅读

    opencv图像识别有什么算法

    OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,提供了大量的图像处理和计算机视觉相关的算法。以下是一些常见的OpenCV
    的头像 发表于 07-16 10:40 1094次阅读

    opencv-python和opencv一样吗

    不一样。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。OpenCV
    的头像 发表于 07-16 10:38 1261次阅读

    opencv的主要功能有哪些

    OpenCV提供了丰富的图像处理功能,包括图像的读取、显示、保存、转换等。此外,OpenCV还支持图像的滤波、边缘检测、形态学操作、图像金字塔等高级图像处理技术。 特征检测与描述:
    的头像 发表于 07-16 10:35 1603次阅读

    巍泰技术毫米波雷达如何助力道路车辆预警?静态目标检测是关键

    毫米波雷达可以识别静态目标,但在某些应用场景下,为了防止功能误触,会滤除静止目标的特征。然而,在车辆预警的实际应用中,静态目标的检测十分必要。目前用于雾天安全行车诱导的车辆检测技术主要
    的头像 发表于 02-27 15:59 964次阅读
    巍泰技术毫米波雷达如何助力道路<b class='flag-5'>车辆</b>预警?静态目标<b class='flag-5'>检测</b>是关键

    WTR-563 雾区车辆检测雷达

    产品概述:WTR-563可对车道上动态、静态车辆目标进行准确探测,并有效提取静止车辆信息,辅助进行当前路端事件判断,如交通拥堵、车辆违法、车辆追尾等。雷达安装在道路侧面,
    发表于 02-22 15:50 0次下载

    OpenCV4.8 C++实现YOLOv8 OBB旋转对象检测

    YOLOv8框架在在支持分类、对象检测、实例分割、姿态评估的基础上更近一步,现已经支持旋转对象检测(OBB),基于DOTA数据集,支持航拍图像的15个类别对象检测,包括车辆、船只、典型
    的头像 发表于 02-22 10:15 1735次阅读
    <b class='flag-5'>OpenCV</b>4.8 C++实现YOLOv8 OBB旋转对象<b class='flag-5'>检测</b>

    在核桃派上实现USB摄像头的OpenCV颜色检测

    在前几周的文章中已经介绍过如何在核桃派上用OpenCV读取图像并显示到pyqt5的窗口上,这里在上一篇文章的基础上,给开发板加入颜色检测功能,尝试将图像中所有蓝色的东西都用一个框标记出来。
    的头像 发表于 01-20 17:50 956次阅读
    在核桃派上实现USB摄像头的<b class='flag-5'>OpenCV</b>颜色<b class='flag-5'>检测</b>