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

本文主要是介绍YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

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()函数添加线条,并检查车辆是否跨越了这些线。

这篇关于YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147750

相关文章

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

hdu4267区间统计

题意:给一些数,有两种操作,一种是在[a,b] 区间内,对(i - a)% k == 0 的加value,另一种操作是询问某个位置的值。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import

hdu4417区间统计

给你一个数列{An},然后有m次查询,每次查询一段区间 [l,r] <= h 的值的个数。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamRead