首页 > 其他分享 >YOLOv8——测量高速公路上汽车的速度

YOLOv8——测量高速公路上汽车的速度

时间:2024-09-25 18:48:34浏览次数:3  
标签:测量 YOLO cv2 pts YOLOv8 高速公路 算法 names speed

引言

在人工神经网络和计算机视觉领域,目标识别和跟踪是非常重要的技术,它们可以应用于无数的项目中,其中许多可能不是很明显,比如使用这些算法来测量距离或对象的速度。
测量汽车速度基本步骤如下:

  1. 视频采集:使用摄像头或其他图像采集设备获取高速公路上汽车行驶的视频图像。
  2. 目标检测:运用计算机视觉算法,如YOLOv8,对视频中的汽车进行目标检测,确定汽车的位置和边界框。
  3. 跟踪算法:采用跟踪算法对检测到的汽车进行跟踪,在连续的帧中保持对同一辆汽车的识别。
  4. 距离测量:通过已知的参照物或标志物,如道路标线、标志牌等,测量汽车在图像中移动的距离。
  5. 时间计算:记录汽车在两个位置之间移动的时间间隔,可以通过帧间时间差来计算。
  6. 速度计算:根据测量得到的距离和时间,使用速度公式(速度 = 距离 ÷ 时间)计算汽车的速度。
    在这里插入图片描述

YOLOv8

为了方便管理,还是在conda里面安装:

conda create -n yolov8 python=3.8
activate ylolv8
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia
pip install ultralytics

代码

from ultralytics import YOLO
from ultralytics.solutions import speed_estimation
import cv2

model = YOLO("yolov8s.pt")
names = model.model.names

cap = cv2.VideoCapture("/pathFreeway_night.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

video_writer = cv2.VideoWriter("/path/speed_estimation.avi",
                               cv2.VideoWriter_fourcc(*'mp4v'),
                               fps,
                               (w, h))

line_pts = [(0, 400), (1280, 400)]

speed_obj = speed_estimation.SpeedEstimator()
speed_obj.set_args(reg_pts=line_pts,
                   names=names,
                   view_img=True)

while cap.isOpened():

cap.release()
video_writer.release()
cv2.destroyAllWindows()

代码解释

视频源

视频显示一个静止的相机,即一个不在其轴上移动并且总是显示街道或道路的相同部分的相机,这很重要,以避免准确性错误。另一个重要的点是选择一个能够处理视频的库,提供逐帧的图像供 YOLO 模型进行推理,这是下一步,这里要涉及 Opencv 库。

识别汽车

为了识别对象,使用了预训练的 YOLO 算法,该算法可以从 ultralytics 库中获得。这个算法允许实时识别感兴趣的对象,并且具有很好的准确性。

model = YOLO("yolov8s.pt")

在这种情况下,‘小型’模型(字母 s)证明是绰绰有余的。

应用跟踪

仍然在 YOLO 模型中,包含了一个跟踪算法,该算法旨在通过连续的帧持续监控和跟踪特定对象的移动。它的实现很简单,如下所示:

tracks = model.track(im0, persist=True, show=False)

在这里我们将一个函数直接整合到对象识别模型中。

定义区域

项目的一个重要步骤是定义对象必须穿过的区域,以便可以测量通过这个点的时间,从这个参考点我们可以计算速度。

为此,我们定义了坐标(x 和 y 点),这个区域应该开始和结束,如下:

line_pts = [(0, 400), (1280, 400)] # 绘制一条线,从屏幕的一侧穿过到另一侧

这个区域作为参数传递给负责计算速度的函数:

speed_obj.set_args(reg_pts=line_pts, names=names, view_img=True)

如何计算速度?

该函数通过存储随时间跟踪的位置来处理帧,因此通过比较定义区域内当前位置与先前位置的关系来计算每个检测到的对象的速度,允许通过它在该区域内移动所需的时间来估算对象的速度,遵循物理学中一个非常知名的术语:

v = Δ t Δ s v= \frac{Δt}{Δs} v=ΔsΔt​

其中,v 是速度,Δs 是位移(距离),Δt 是时间间隔。

结果

在这里插入图片描述

标签:测量,YOLO,cv2,pts,YOLOv8,高速公路,算法,names,speed
From: https://blog.csdn.net/matt45m/article/details/142502081

相关文章

  • 三坐标测量机有哪些应用场景
    三坐标测量机具有广泛的应用场景,主要包括以下几个方面:一、汽车制造领域汽车零部件检测:可精确测量发动机缸体、缸盖、曲轴、凸轮轴等关键零部件的尺寸、形状和位置精度,确保其符合设计要求。例如,通过三坐标测量机对曲轴的圆柱度、直线度、偏心距等参数进行检测,保证发动机的性能和可靠......
  • 深入了解ISO 10012测量管理体系认证
    在当今快速发展的市场环境中,企业面临着越来越高的质量管理和测量要求。ISO10012测量管理体系认证应运而生,旨在帮助企业建立一套系统的测量管理流程,确保其测量过程和测量设备的准确性与可靠性。这一认证不仅对企业的内部管理有着深远影响,也为其在市场竞争中提供了有力支持。ISO100......
  • YOLOv8实战和matlab建模:检测监控站视频的车流量、速度、车辆时间占用率以及预估拥堵模
            我们得到了某监控点的检测视频数据,需要从数据当中得到车流量、速度、车辆时间占用率等基本数据然后用于车道推测拥堵。以某一路段内检测点为例利用YOLOv8实战检验。假设:车辆只有轿车与卡车两种类型并分别设置车长;某路段只检测双车道并且应急车道不开放;YOLOv8......
  • 老年人跌倒智能识别系统 YOLOv8
    老年人跌倒智能识别系统可以广泛应用于养老院、医院和其他关爱老年人的场所。老年人跌倒智能识别系统通过实时监测和智能识别,老年人跌倒智能识别系统能够及时发现老年人跌倒情况,提供快速的援助和救援措施,保障老年人的安全。未来,我们相信老年人跌倒智能识别系统将继续得到创新和应用......
  • 防溺水智能预警系统解决方案 YOLOv8
    防溺水智能预警系统解决方案的关键特点如下:防溺水智能预警系统解决方案通过将前端摄像头等设备统一安装并集中接入系统,防溺水智能预警系统解决方案实现对危险水域的全方位监测。这些设备将覆盖所有可能发生溺水事故的区域,并通过网络连接到监控平台,实现信息的实时收集与传输。防溺水......
  • 安全帽人脸闸机联动系统 YOLOv8
    安全帽人脸闸机联动系统基于人员进出工地的安全管理创新解决方案。安全帽人脸闸机联动系统结合了安全帽和工装穿戴检测以及人脸识别技术,安全帽人脸闸机联动系统通过对人员进行安全帽和工装穿戴的检测,并使用人脸识别技术判断其是否为工作人员,从而实现对工地出入口的控制和管理。安全......
  • 在Activity中测量控件宽高的三种方式
    在进行Android开发时,有时需要测量控件的宽和高,常用的方式有以下三种:(1)重写onWindowFocusChanged(hasFocus:Boolean)方法,在这个方法内获取控件的宽高这个方法在Activity的窗口焦点发生变化时调用,具体可以分为窗口获得焦点时和窗口失去焦点时。Activity的焦点发生变化时,相关的......
  • 日差校表仪检定装置功能 瞬时日差测量仪检定装置 数字式校表仪检定仪
    日差校表仪检定装置功能介绍关键词:日差测量仪检定仪、校表仪检定仪、校表仪检定装置日差是指电子计时设备的走一天所产生的误差,瞬时日差测量仪通过计算在一段时间内快速测电子计时设备得的日差结果称为瞬时日差。瞬时日差测量仪一般由传感器和主机组成,利用传感器将电子计时设备发出......
  • 51单片机双机通信——DS18B20温度测量
    目标实现功能    甲机控制数字温度传感器DS18B20采集温度、并将温度传递给乙机;乙机接收甲机传递的温度数据、并通过8位数码管动态显示。1.DS18B20简介1.1 DS18B20特点DS18B20采用单总线接口,测量结果直接输出数字信号,通过单总线传递给微处理器。工作电压在3.0v~5.5v......
  • 【2024华为杯E题】高速公路应急车道启用E题思路+代码+论文
    订阅本专栏,认真钻研,保省级及以上奖项!若无获奖,本博主免费提供任意两份本博客初级版专栏代码!......