YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)

news2024/11/24 18:58:45

 

01:YOLOv8 + DeepSort 车辆跟踪

该项目利用YOLOv8作为目标检测模型,DeepSort用于多目标跟踪。YOLOv8负责从视频帧中检测出车辆的位置,而DeepSort则负责关联这些检测结果,从而实现车辆的持续跟踪。这种组合使得系统能够在视频流中准确地识别并跟随特定车辆。

02:YOLOv8 + DeepSort 车辆跟踪 + 任意绘制进出线

在此基础上增加了用户界面功能,允许用户在视频监控区域内自由绘制进出线。当被跟踪的车辆穿过这些线时,系统会记录事件,例如记录车辆进入或离开某个区域的时间。这对于交通流量管理和安全监控很有帮助。

03:YOLOv8 + DeepSort 车辆跟踪 + 测速

系统增加了测速功能,通过计算车辆在两帧或多帧图像之间的位移来估计其速度。一旦检测到车辆超速,系统将触发报警机制。这项功能对于交通安全监控尤为重要。

04:YOLOv8 + DeepSort 车辆跟踪 + 测速 + 任意绘制进出线

结合了测速和任意绘制进出线的功能,不仅能够跟踪车辆并测量其速度,还能在用户定义的进出线上记录车辆的速度和通行时间。这对于交通管理和执法活动非常有用。

05:YOLOv8 + DeepSort 车辆跟踪 + 禁停区域 + 进出线

增加了禁停区域的检测功能,系统能够识别并标记出不允许停车的区域。当车辆在这些区域内停留时,系统将触发警报。同时,进出线的功能可以帮助监控车辆是否非法进入禁停区。

06:YOLOv8 + DeepSort 车辆跟踪 + 任意绘制禁停区域 + 任意绘制进出线

进一步提升了系统的灵活性,允许用户根据需要自定义禁停区域以及进出线的位置。这种配置可以更好地适应各种应用场景,如临时禁停区域的设置。

07:YOLOv8 + DeepSort 车辆跟踪 + 测速 + 禁停区域 + 进出线

整合了测速、禁停区域和进出线的功能,系统可以在监测车辆速度的同时,防止车辆在不应停车的地方停留,并记录它们的进出情况。这对于交通安全管理非常关键。

08:YOLOv8 + DeepSort 车辆跟踪 + 测速 + 任意绘制禁停区域 + 任意绘制进出线

提供了最大的灵活性,允许用户根据具体的监控需求自由设定禁停区域和进出线的位置。这对于需要高度定制化监控解决方案的应用尤其适用。

09:YOLOv8 + DeepSort 车辆跟踪 + 车道车辆检测

此项目在车辆跟踪的基础上增加了车道检测功能,能够识别道路上的不同车道,并且能够区分各车道上的车辆。这有助于智能交通系统更好地管理交通流量,减少道路拥堵现象。

每个项目都利用了YOLOv8的高效检测能力和DeepSort的跟踪优势,可以根据具体的应用场景和技术要求进行调整和优化。

首先,确保安装了必要的库:

 
1pip install ultralytics  # YOLOv8
2pip install deep_sort_pytorch  # DeepSort

基础代码框架

1. 导入必要的库
 
1import cv2
2from ultralytics import YOLO
3from deep_sort_pytorch.deep_sort import DeepSort
4import numpy as np
2. 初始化YOLOv8模型和DeepSort
1# 加载YOLOv8模型
2model = YOLO('yolov8n.pt')  # 或者使用预训练模型路径
3
4# 初始化DeepSort
5deepsort = DeepSort(
6    'osnet_x0_25',
7    max_dist=0.2,
8    max_iou_distance=0.7,
9    max_age=70,
10    n_init=3,
11    nn_budget=100,
12    use_cuda=True
13)
3. 定义处理每一帧的方法
1def process_frame(frame, model, deepsort):
2    # 使用YOLOv8进行目标检测
3    results = model(frame)
4
5    # 获取检测结果
6    boxes = results[0].boxes.cpu().numpy()
7    scores = results[0].scores.cpu().numpy()
8    classes = results[0].names
9
10    # 只保留车辆类别的检测结果
11    vehicle_boxes = []
12    for box, score, class_name in zip(boxes, scores, classes):
13        if class_name in ['car', 'truck', 'bus']:  # 根据YOLOv8的类别名称选择
14            vehicle_boxes.append([*box[:4], score])
15
16    # 将检测结果传递给DeepSort进行跟踪
17    outputs = deepsort.update(np.array(vehicle_boxes), frame)
18
19    # 绘制跟踪框
20    for output in outputs:
21        x1, y1, x2, y2, track_id = output
22        cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
23        cv2.putText(frame, f"ID: {int(track_id)}", (int(x1), int(y1 - 10)), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
24
25    return frame
4. 处理视频流
1# 打开视频文件
2video_path = 'path_to_your_video.mp4'
3cap = cv2.VideoCapture(video_path)
4
5while cap.isOpened():
6    ret, frame = cap.read()
7    if not ret:
8        break
9
10    # 处理每一帧
11    processed_frame = process_frame(frame, model, deepsort)
12
13    # 显示结果
14    cv2.imshow('Vehicle Tracking', processed_frame)
15
16    # 按Q键退出
17    if cv2.waitKey(1) & 0xFF == ord('q'):
18        break
19
20# 清理
21cap.release()
22cv2.destroyAllWindows()

扩展功能

对于扩展功能,如测速、绘制进出线、禁停区域等功能,需要在process_frame函数中加入额外的逻辑。例如,为了实现测速功能,你可以根据车辆在不同帧中的位置变化来计算速度;为了绘制进出线,可以在processed_frame上使用cv2.line()函数添加线条,并检查车辆是否跨越了这些线。

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

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

相关文章

连接池的设计与实现-0基础Go语言版

为什么需要连接池? 假设现在没有连接池,每次建立一个新的连接,都需要消耗一定的时间开销(必要时会使用TCP三次握手)。因此,连接的创建和销毁是一件非常昂贵的操作。尤其是在高并发场景下,可能会…

一场 Kafka CRC 异常引发的血案

一、问题概述 客户的生产环境突然在近期间歇式的收到了Kafka CRC的相关异常,异常内容如下 Record batch for partition skywalking-traces-0 at offset 292107075 is invalid, cause: Record is corrupt (stored crc 1016021496, compute crc 1981017560) 报错…

时间同步服务

多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协 议,日志,集群等。 利用NTP(Network Time Protocol) 协议使网络中的各个计算机时间达到…

网络安全运维培训一般多少钱

在当今数字化时代,网络安全已成为企业和个人关注的焦点。而网络安全运维作为保障网络安全的重要环节,其专业人才的需求也日益增长。许多人都对网络安全运维培训感兴趣,那么,网络安全运维培训一般多少钱呢? 一、影响网络安全运维培…

RISC-V (十一)软件定时器

主要的思想:硬件定时器是由硬件的定时器设备触发的。软件定时器在硬件定时器的基础上由软件控制实现多个定时器的效果。主要的思路是在trap_handler函数中加入软件代码,使其在设定的时间点 去执行想要执行的功能函数。 定时器的分类 硬件定时器&#xf…

Linux 复制目录和文件

概述 cp 命令主要可用于复制文件或目录。 cp 是单词 copy 的缩写。 语法 cp 命令的语法如下: cp [选项] source dest。即复制 source 文件到 dest。 该命令支持的选项有: 选项说明-r递归复制整个文件夹-i若目标文件已经存在,则会询问是否覆盖-p保留源文件或目录的所有属性…

安卓玩机工具-----ADB方式的刷机玩机工具“秋之盒”’ 测试各项功能预览

秋之盒 安卓玩机工具-秋之盒是一款ADB刷机工具箱,基于谷歌ADB的一款绿色安装,具备了海量扩展模块,支持ADB刷机救砖、一键激活黑域、adb指令修复等功能,是一款开源、免费、易用的手机刷机工具! 并且是一款开源、免费、易用的图形化…

OneHotEncoder一个不太合理的地方

OneHotEncoder,在Xtrain上fit,在Xtest上transform 如果遇到某个值出现在Xtest,而没有在Xtrain出现过时,会抛出如下错误: OneHotEncoder Found unknown categories [xxx] in column xx during transform OneHotEncoder …

简单实用的php全新实物商城系统

免费开源电商系统,提供灵活的扩展特性、高度自动化与智能化、创新的管理模式和强大的自定义模块,让电商用户零成本拥有安全、高效、专业的移动商城。 代码是全新实物商城系统源码版。 代码下载

Prometheus 服务监控

官网:https://prometheus.io Prometheus 是什么 Prometheus 是一个开源的系统监控和报警工具,专注于记录和存储时间序列数据(time-series data)。它最初由 SoundCloud 开发,并已成为 CNCF(云原生计算基金会…

基于EPS32C3电脑远程开机模块设计

基于EPS32C3电脑远程开机模块设计 前言 缘起,手头资料太多了,所以想组一台NAS放在家里存储数据。在咸鱼淘了一套J3160主板加机箱,加上几块硬盘组建NAS。 对于NAS,我的需求是不用的时候关机(节省功耗),要用的时候开机…

每日OJ_牛客_骆驼命名法(递归深搜)

目录 牛客_骆驼命名法(简单模拟) 解析代码 牛客_骆驼命名法(简单模拟) 骆驼命名法__牛客网 解析代码 首先一个字符一个字符的读取内容: 遇到 _ 就直接跳过。如果上一个字符是 _ 则下一个字符转大写字母。 #inclu…

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒…

LEAN 类型理论之注解(Annotations of LEAN Type Theory)-- 小结(Summary)

在证明LEAN类型理论的属性前,先对LEAN类型理论所定义的所有推演规则做一个小结,以便后面推导LEAN类型理论的属性。各部分的注解请查看对应文章。 注:这些都是在《LEAN类型理论》中截取出来的,具体内容,读者可参考该论…

ApacheKafka中的设计

文章目录 1、介绍1_Kafka&MQ场景2_Kafka 架构剖析3_分区&日志4_生产者&消费者组5_核心概念总结6_顺写&mmap7_Kafka的数据存储形式 2、Kafka的数据同步机制1_高水位(High Watermark)2_LEO3_高水位更新机制4_副本同步机制解析5_消息丢失问…

Redis典型应用 - 分布式锁

文章目录 目录 文章目录 1. 什么是分布式锁 2. 分布式锁的基本实现 3. 引入过期时间 4. 引入校验Id 5. 引入 watch dog(看门狗) 6. 引入redlock算法 工作原理 Redlock的优点: 总结 1. 什么是分布式锁 在一个分布式系统中,也可能会出现多个节点访问一个共…

QT 编译报错:C3861: ‘tr‘ identifier not found

问题: QT 编译报错:C3861: ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中, 解决方案 就直接用类名引用 :QObject::tr( )

关于易优cms自定义字段不显示的问题

今天在该易优cms自定义字段&#xff0c;折腾了大半天没显示出来&#xff0c;原来是改错对方了。 主要引用的时候 要放在list标签内&#xff0c;不要看文档&#xff0c;把addfields 放在list标签上 例如 {eyou:list loop8} <li><a href"{$field.arcurl}">…

基于yolov8的电动车佩戴头盔检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的电动车佩戴头盔检测系统利用了YOLOv8这一先进的目标检测模型&#xff0c;旨在提高电动车骑行者的安全意识&#xff0c;减少因未佩戴头盔而导致的交通事故风险。YOLOv8作为YOLO系列的最新版本&#xff0c;在检测速度和精度上均进行了优化&#xff0c;…

✨机器学习笔记(一)—— 监督学习和无监督学习

1️⃣ 监督学习&#xff08;supervised learning&#xff09; ✨ 两种主要类型的监督学习问题&#xff1a; 回归&#xff08;regression&#xff09;&#xff1a;predict a number in infinitely many possible outputs. 分类&#xff08;classification&#xff09;&#xff1…