Bootstrap

YOLOV8目标跟踪与测速并绘制进出线与交互式禁停区域GUI

YOLOV8目标跟踪与测速(绘制进出线与禁停区域)

使用

后端运行

python detect.py

YOLOv8(You Only Look Once version 8)是一种先进的实时对象检测算法,它在计算机视觉领域中用于识别和定位图像或视频流中的物体。与之前的版本相比,YOLOv8可能引入了新的改进和优化,以提高检测速度、准确性和处理能力。当YOLOv8被应用于目标跟踪与测速时,它能够提供一种高效的方法来监测交通流量、车辆速度以及行人和其他移动物体的行为。

为了实现对目标的跟踪与测速,YOLOv8首先通过其神经网络架构快速而精确地检测出视频帧中的所有相关目标。然后,结合多目标跟踪(MOT, Multi-Object Tracking)算法,如SORT(Simple Online and Realtime Tracking)、Deep SORT等,可以持续跟踪每个目标的位置变化,并计算它们的速度。对于进出线绘制,可以在监控区域内定义虚拟边界,一旦检测到目标跨越这些边界,则记录相应的事件。这种机制有助于统计进入和离开特定区域的物体数量,比如停车场入口和出口处的车辆计数。

交互式禁停区域GUI(Graphical User Interface)允许用户轻松设置和管理禁止停车的区域。通过友好的图形界面,管理员可以拖放选择禁停区的位置和大小,并设定规则,例如何时生效、哪些类型的车辆适用等。如果检测到有车辆违反规定停放在禁停区内,系统可以触发警报或通知相关管理部门。此外,GUI还可以集成地图视图,显示当前所有检测到的目标及其状态,提供历史数据查询功能,帮助进行趋势分析和决策支持。

总之,将YOLOv8应用于目标跟踪与测速,并结合进出线绘制和交互式禁停区域GUI,可以为城市交通管理和智能安防提供强大的工具。这套系统不仅提高了监控效率,还能有效预防交通事故,确保公共安全。同时,随着技术的发展,这类应用将继续演进,为更多领域带来创新解决方案。

参数修改

# 进出线修改
line = [(0, 540), (1920, 540)]
# 模型文件
model_path = "./weights/yolov10n.pt"
# 检测视频
video_path = "./testVideo/VehicleTest.mp4"
# 保存路径
save_path = "./outputs/VehicleTest.mp4"

可视化界面

python GUI.py

在这里插入图片描述

界面参数

Iou:交并比阈值。预测框大小∩真实框大小 / 预测框大小∪真实框大小。(预测框与真实框的交集与并集的取值。)

越大,则容易将对于同一个物品的不同预测结果 当成 对多个物品的多个预测结果,导致一个物品出现了多个预测结果。

越小,则容易将对于多个物品的不同预测结果 当成 对同一个物品的不同预测结果,导致多个物品只出现了一个预测结果。

Conf:置信度阈值。 只显示预测概率超过conf的预测结果。
在这里插入图片描述

测速不准

修改下述的数值

def __init__(self):
    """
    配置相机画面与地图的映射点,需要根据自己镜头和地图上的点重新配置
    """
    quad_coords = {
        "lonlat": np.array([
            [30.221866, 120.287402],  # top left
            [30.221527, 120.287632],  # top right
            [30.222098, 120.285806],  # bottom left
            [30.221805, 120.285748]  # bottom right
        ]),
        "pixel": np.array([
            [196, 129],  # top left
            [337, 111],  # top right
            [12, 513],  # bottom left
            [530, 516]  # bottom right
        ])
    }
    self.pm = PixelMapper(quad_coords["pixel"], quad_coords["lonlat"])

在这里插入图片描述

测速不准

修改下述的数值

def __init__(self):
    """
    配置相机画面与地图的映射点,需要根据自己镜头和地图上的点重新配置
    """
    quad_coords = {
        "lonlat": np.array([
            [30.221866, 120.287402],  # top left
            [30.221527, 120.287632],  # top right
            [30.222098, 120.285806],  # bottom left
            [30.221805, 120.285748]  # bottom right
        ]),
        "pixel": np.array([
            [196, 129],  # top left
            [337, 111],  # top right
            [12, 513],  # bottom left
            [530, 516]  # bottom right
        ])
    }
    self.pm = PixelMapper(quad_coords["pixel"], quad_coords["lonlat"])

进出线与禁停区域

![外链图

禁停区域时间

detect.py
# 禁停区域的时间
StopTime = 1

在禁停区域的时间超过该数值就会被认定在该区域
)]
在这里插入图片描述

禁停区域时间

detect.py
# 禁停区域的时间
StopTime = 1

在禁停区域的时间超过该数值就会被认定在该区域

;