YOLOv11目标检测实战2:人流统计、车流统计和跟踪(附源码)

news2024/11/24 6:35:16

目录

一、演示效果

二、基础理论和核心概念

三、安装环境和依赖

四、工作流程和步骤

五、核心部分源码:

六、总结


一、演示效果

二、基础理论和核心概念

YOLOv11 是 YOLO 系列的最新版本,它不仅在目标检测方面表现出色,还引入了对象分割和多目标跟踪的功能。本文将介绍如何使用 YOLOv11 进行人流统计、车流统计以及跟踪的实际应用。

在实际应用场景中,如智能交通系统、安防监控、商业分析等,人流统计和车流统计是非常重要的任务。通过实时监测和统计人群和车辆的数量,可以提供关键的数据支持,帮助决策者进行有效的管理和规划。YOLOv11 结合了高效的目标检测和强大的多目标跟踪能力,非常适合这类应用。

三、安装环境和依赖

在开始之前,请确保你的开发环境已经安装了以下依赖:

Python 3.7+
PyTorch 1.8+(建议使用 CUDA 支持)
OpenCV 4.x
其他依赖库(如 NumPy, Pillow 等)
 

四、工作流程和步骤

4.1 人流统计

人流统计涉及检测图像或视频帧中的行人,并计算其数量。使用 YOLOv11 进行人流统计的基本步骤如下:

  1. 加载预训练模型:加载预先训练好的 YOLOv11 模型。
  2. 读取视频或图像:读取需要进行人流统计的视频或图像。
  3. 执行目标检测:对每一帧执行目标检测,获取所有行人的边界框。
  4. 统计人数:根据检测结果统计每帧中的人数。
  5. 输出结果:将统计结果保存到文件或显示在屏幕上。

4.2 车流统计

车流统计与人流统计类似,但检测的对象是车辆。基本步骤如下:

  1. 加载预训练模型:加载预先训练好的 YOLOv11 模型。
  2. 读取视频或图像:读取需要进行车流统计的视频或图像。
  3. 执行目标检测:对每一帧执行目标检测,获取所有车辆的边界框。
  4. 统计车辆数:根据检测结果统计每帧中的车辆数。
  5. 输出结果:将统计结果保存到文件或显示在屏幕上。

五、核心部分源码:


import cv2

from ultralytics import YOLO, solutions

# Load the pre-trained YOLOv8 model
model = YOLO("../checkpoints/yolo11n.pt")

# Open the video file
cap = cv2.VideoCapture("../inputs/007.mp4")
assert cap.isOpened(), "Error reading video file"

# Get video properties: width, height, and frames per second (fps)
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Define points for a line or region of interest in the video frame
line_points = [(20, 600), (1080, 600)]  # Line coordinates

# Specify classes to count, for example: person (0) and car (2)
classes_to_count = [0, 2]  # Class IDs for person and car

# Initialize the video writer to save the output video
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize the Object Counter with visualization options and other parameters
counter = solutions.ObjectCounter(
    view_img=True,  # Display the image during processing
    reg_pts=line_points,  # Region of interest points
    names=model.names,  # Class names from the YOLO model
    draw_tracks=True,  # Draw tracking lines for objects
    line_thickness=2,  # Thickness of the lines drawn
)

# Process video frames in a loop
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    # Perform object tracking on the current frame, filtering by specified classes
    tracks = model.track(im0, persist=True, show=False, classes=classes_to_count)

    # Use the Object Counter to count objects in the frame and get the annotated image
    im0 = counter.start_counting(im0, tracks)

    # Write the annotated frame to the output video
    video_writer.write(im0)

# Release the video capture and writer objects
cap.release()
video_writer.release()

# Close all OpenCV windows
cv2.destroyAllWindows()

六、总结

通过上述步骤,我们已经介绍了如何使用 YOLOv11 进行人流统计、车流统计和多目标跟踪。YOLOv11 的高效性和准确性使其成为这些任务的理想选择。希望这篇博客能够帮助读者更好地理解和应用 YOLOv11 在实际项目中的强大功能。如果你有任何问题或建议,欢迎留言交流!

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

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

相关文章

linux和windows系统使用k8s控制节点的kubernetes资源

一般linux获取master控制节点的授权: [rootharbor ~]# vim /etc/hosts 192.168.1.30 harbor 192.168.1.50 master 192.168.1.51 node-0001 192.168.1.52 node-0002 192.168.1.53 node-0003 192.168.1.54 node-0004 192.168.1.55 node-0005#下…

PostgreSQL升级:使用pg_upgrade进行大版本(16.3)升级(17.0)

1.pg_upgrade工具介绍 pg_upgrade 会创建新的系统表,并以重用旧的数据文件的方式进行升级。 pg_upgrade 的参数选项如下: -b bindir,--old-bindirbindir:旧的 PostgreSQL 可执行文件目录; -B bindir,--new-…

CleverPDF是一款专业的pdf转换器-强大的PDF表格识别能够将PDF中的表格提取到Excel或者其他格式-供大家学习研究参考

提供了更多的输出选项来满足您不同的PDF转换需求,强大的PDF表格识别能够帮助您准确地将PDF中的表格提取到Excel或者其他格式。另外CleverPDF无需上传文件到互联网,直接在您的本地电脑处理PDF,让您更放心地转换或编辑隐私或者保密的文档&#…

CSS——文字闪烁效果

CSS——文字闪烁效果 今天来完成一个文字闪烁的动态效果&#xff0c;具体呈现效果如下&#xff1a; 文字闪烁动态效果 实现步骤 基础的样式 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vi…

Android Context是什么?有很多的context他们之间有什么区别?什么时候该使用哪个?

目录 一、Context是什么&#xff1f; 在Android中&#xff0c;Context是一个抽象类 &#xff0c;它代表了应用程序的当前状态&#xff0c;包括资源和类加载器等&#xff0c;它提供了一个应用运行所需的信息&#xff0c;比如我们要获取资源 &#xff0c;那么需要她&#xff0c;…

基于单片机的两轮直立平衡车的设计

本设计基于单片机设计的两轮自平衡小车&#xff0c;其中机械部分包括车体、车轮、直流电机、锂电池等部件。控制电路板采用STC12C5A60S2作为主控制器&#xff0c;采用6轴姿态传感器MPU6050测量小车倾角&#xff0c;采用TB6612FNG芯片驱动电机。通过模块化编程完成了平衡车系统软…

Python使用matplotlib绘制五星红旗

安装包 pip install matplotlib pip install numpy完整代码 import matplotlib.pyplot as plt import numpy as np# 设置画布尺寸 fig plt.figure(figsize(10, 7)) ax fig.add_subplot(111)# 绘制红色背景 ax.set_facecolor(red)# 五星红旗的尺寸定义 flag_width 30 flag_…

云岚到家xxl job 配置

调度中心&#xff1a; 负责管理调度信息&#xff0c;按照调度配置发出调度请求&#xff0c;自身不承担业务代码&#xff1b; 主要职责为执行器管理、任务管理、监控运维、日志管理等 任务执行器&#xff1a; 负责接收调度请求并执行任务逻辑&#xff1b; 主要职责是执行任…

文章解读与仿真程序复现思路——高电压技术EI\CSCD\北大核心《适用于并联构网型储能系统的协调有功控制策略设计》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

解决OpenCV保存视频 视频全部为绿色的bug

目录 项目场景&#xff1a; 问题描述 原因分析&#xff1a; 解决方案&#xff1a; 项目场景&#xff1a; 使用OpenCV-Python 保存视频&#xff0c;视频为numpy array格式&#xff0c;保存的视频全部为无意义的绿色。 问题描述 用opencv 保存的视频会出现全部为绿色的情况&…

Webpack模式-Resolve-本地服务器

目录 ResolveMode配置搭本地服务器区分环境配置 Resolve 前面学习时使用了各种各样的模块依赖&#xff0c;这些模块可能来自于自己编写的代码&#xff0c;也可能来自第三方库&#xff0c;在 Webpack 中&#xff0c;resolve 是用于解析模块依赖的配置项&#xff0c;它决定了 We…

FTP应用篇:低功耗4G模组Air780EP AT开发

低功耗4G模组Air780EP支持全系列的AT指令以及LuatOS脚本二次开发。 今天我们详细讲解Air780EP模组FTP应用的多个AT命令示例。 本文同样适用于以下型号&#xff1a; Air700ECQ/Air700EAQ/Air700EMQ Air780EQ/Air780EPA/Air780EPT/Air780EPS Air780E/Air780EX/Air724UG… 一、相…

ARM 架构、cpu

一、ARM的架构 ARM是一种基于精简指令集&#xff08;RISC&#xff09;的处理器架构. 1、ARM芯片特点 ARM芯片的主要特点有以下几点&#xff1a; 精简指令集&#xff1a;ARM芯片使用精简指令集&#xff0c;即每条指令只完成一项简单的操作&#xff0c;从而提高指令的执行效率…

是什么导致position: sticky;top: 0;滚动到一屏高度就失效的呢?

例子代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>html…

【笔记】如何将本地的.md变成不影响阅读的类pdf模式

在1处搜索markdown viewer 在2处勾选url复选框 将需要阅读的md文件的本地路径去除双引号&#xff08;如果没有双引号不必做任何处理&#xff09; 直接放进浏览器url地址栏 正常显示图片与文字 解决

C语言数组和指针笔试题(四)

目录 二维数组例题一例题二例题三例题四例题五例题六例题七例题八例题九例题十例题十一 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412;个人主页 &#x1f978;&#x1f978;&#x1f978;C语言 &#x1f43f;️…

设计模式之访问者

一、访问者设计模式概念 访问者模式&#xff08;Visitor&#xff09; 是一种行为设计模式&#xff0c; 它能将算法与其所作用的对象隔离开来。 适用场景 如果你需要对一个复杂对象结构 &#xff08;例如对象树&#xff09; 中的所有元素执行某些操作&#xff0c; 可使用访问者模…

King3399 SDK(ubuntu文件系统)编译简明教程

该文章仅供参考&#xff0c;编写人不对任务实验设备、人员及测量结果负责&#xff01;&#xff01;&#xff01; 0 引言 文章主要介绍King3399&#xff08;瑞芯微rk3399开发板&#xff0c;荣品&#xff09;官方SDK&#xff08;Ubuntu文件系统&#xff09;编译过程&#xff0c…

Linux bash脚本 远程开发环境配置

参考资料 太香了&#xff0c;VSCode远程开发插件&#xff0c;值得一试Visual Studio Code で Remote SSH する。Managing extensions 目录 一. 远程开发必备二. 连接远程开发服务器三. 安装远程开发插件 一. 远程开发必备 ⏹ VSCode插件 Remote - SSH 通过使用 SSH 链接虚拟…

司法质量改善:巡回法庭的准自然实验(2000-2022年)(原始数据、计算代码、最终计算结果(Excel和Dta)和参考文献)

巡回法庭的设立背景 最高人民法院自2015年起分批次设立地方巡回法庭&#xff0c;以期改善司法质量&#xff0c;促进司法公正。这种改革措施为研究提供了一个独特的机会&#xff0c;可以通过准自然实验的方法来评估其效果。 2000-2022年司法质量改善&#xff1a;巡回法庭的准自…