yolov5目标跟踪统计人流量

本文介绍了如何在YOLOv5基础上改进,增加手动点击获取坐标点的功能,以适应不同视频的人流量统计。首先从视频中抽取帧图像,然后在图像上设定四个坐标点形成检测区域,从而实现目标跟踪和计数。相关代码已在作者之前的博客中详细讲解。
摘要由CSDN通过智能技术生成

先上图

本人是在之前代码的基础上进行修改,增加了检测前,可手动点击获取坐标点,方便检测不同视频

首先是需要截取一张视频帧图片出来,尺寸和视频尺寸一致,这样方便我们在上面打坐标。

这个自动抽取视频帧图像的教程,我之前博客有写

然后是在视频上打上4个坐标,围成一个检测区域

像这样在图像上选中4个点之后,就会生成检测区域

 这部分代码,我前面博客也有介绍

YOLOv5中,可以通过修改检测脚本中的代码来设置视频检测的帧数。具体来说,可以使用OpenCV库中的VideoCapture类来读取视频文件,并使用while循环来逐帧处理视频帧。在循环中,可以使用waitKey函数来指定每一帧的显示时间,例如waitKey(1)表示每一帧显示1毫秒,waitKey(0)表示每一帧等待用户按下任意键后继续播放。如果想要跳过一些帧进行视频检测,可以在循环中使用continue语句来跳过指定的帧数。 以下是一个简单的示例代码,可以设置视频检测的帧数: ``` import cv2 import torch from yolov5.models.experimental import attempt_load from yolov5.utils.general import non_max_suppression, scale_coords, plot_one_box # 加载模型 model = attempt_load('yolov5s.pt', map_location=torch.device('cpu')) # 打开视频文件 cap = cv2.VideoCapture('test.mp4') # 循环遍历视频帧 while cap.isOpened(): # 读取一帧 ret, frame = cap.read() # 如果读取失败,退出循环 if not ret: break # 跳过一些帧 for i in range(10): ret, frame = cap.read() # 图像预处理 img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) img = torch.from_numpy(img).to('cpu') img = img.float() / 255.0 img = img.permute(2, 0, 1).unsqueeze(0) # 目标检测 pred = model(img)[0] pred = non_max_suppression(pred, conf_thres=0.5, iou_thres=0.5) # 显示结果 for det in pred: if len(det): det = det[0] det = scale_coords(img.shape[2:], det[:, :4], frame.shape).round() for *xyxy, conf, cls in reversed(det): label = f'{model.names[int(cls)]} {conf:.2f}' plot_one_box(xyxy, frame, label=label) cv2.imshow('frame', frame) cv2.waitKey(1) ``` 在上面的代码中,通过循环遍历视频帧,并使用range函数跳过了前10帧进行目标检测,从而实现了设置视频检测的帧数的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug生成中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值