加强政协机关网站建设,wordpress图片添加音乐,关于做书的网站,wordpress模拟接口引言
在人工神经网络和计算机视觉领域#xff0c;目标识别和跟踪是非常重要的技术#xff0c;它们可以应用于无数的项目中#xff0c;其中许多可能不是很明显#xff0c;比如使用这些算法来测量距离或对象的速度。 测量汽车速度基本步骤如下#xff1a;
视频采集#x…引言
在人工神经网络和计算机视觉领域目标识别和跟踪是非常重要的技术它们可以应用于无数的项目中其中许多可能不是很明显比如使用这些算法来测量距离或对象的速度。 测量汽车速度基本步骤如下
视频采集使用摄像头或其他图像采集设备获取高速公路上汽车行驶的视频图像。目标检测运用计算机视觉算法如YOLOv8对视频中的汽车进行目标检测确定汽车的位置和边界框。跟踪算法采用跟踪算法对检测到的汽车进行跟踪在连续的帧中保持对同一辆汽车的识别。距离测量通过已知的参照物或标志物如道路标线、标志牌等测量汽车在图像中移动的距离。时间计算记录汽车在两个位置之间移动的时间间隔可以通过帧间时间差来计算。速度计算根据测量得到的距离和时间使用速度公式速度 距离 ÷ 时间计算汽车的速度。
YOLOv8
为了方便管理还是在conda里面安装
conda create -n yolov8 python3.8
activate ylolv8
conda install pytorch2.0.0 torchvision0.15.0 torchaudio2.0.0 pytorch-cuda11.7 -c pytorch -c nvidia
pip install ultralytics代码
from ultralytics import YOLO
from ultralytics.solutions import speed_estimation
import cv2model YOLO(yolov8s.pt)
names model.model.namescap 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_ptsline_pts,namesnames,view_imgTrue)while cap.isOpened():cap.release()
video_writer.release()
cv2.destroyAllWindows()代码解释
视频源
视频显示一个静止的相机即一个不在其轴上移动并且总是显示街道或道路的相同部分的相机这很重要以避免准确性错误。另一个重要的点是选择一个能够处理视频的库提供逐帧的图像供 YOLO 模型进行推理这是下一步这里要涉及 Opencv 库。
识别汽车
为了识别对象使用了预训练的 YOLO 算法该算法可以从 ultralytics 库中获得。这个算法允许实时识别感兴趣的对象并且具有很好的准确性。
model YOLO(yolov8s.pt)在这种情况下‘小型’模型字母 s证明是绰绰有余的。
应用跟踪
仍然在 YOLO 模型中包含了一个跟踪算法该算法旨在通过连续的帧持续监控和跟踪特定对象的移动。它的实现很简单如下所示
tracks model.track(im0, persistTrue, showFalse)在这里我们将一个函数直接整合到对象识别模型中。
定义区域
项目的一个重要步骤是定义对象必须穿过的区域以便可以测量通过这个点的时间从这个参考点我们可以计算速度。
为此我们定义了坐标x 和 y 点这个区域应该开始和结束如下
line_pts [(0, 400), (1280, 400)] # 绘制一条线从屏幕的一侧穿过到另一侧这个区域作为参数传递给负责计算速度的函数
speed_obj.set_args(reg_ptsline_pts, namesnames, view_imgTrue)如何计算速度
该函数通过存储随时间跟踪的位置来处理帧因此通过比较定义区域内当前位置与先前位置的关系来计算每个检测到的对象的速度允许通过它在该区域内移动所需的时间来估算对象的速度遵循物理学中一个非常知名的术语 v Δ t Δ s v \frac{Δt}{Δs} vΔsΔt
其中v 是速度Δs 是位移距离Δt 是时间间隔。
结果