YOLOv11(Ultralytics)视频选定区域目标统计计数及跟踪
在计算机视觉的众多应用场景中,对特定区域的目标进行检测、跟踪与计数是一个常见且重要的需求。无论是在智慧交通中统计通过特定路口的车辆数量,还是在零售分析中追踪进入特定区域的顾客行为,这一功能都发挥着不可或缺的作用。
随着深度学习技术的发展,目标检测算法不断迭代升级。YOLO(You Only Look Once)系列作为目标检测领域的翘楚,以其高效、实时的特性受到广泛关注和应用。YOLOv11(Ultralytics)在检测性能和易用性方面再一次取得了显著提升。本文将给出基础教程,读者可自选区域并读取视频进行测试,本教程同样Ultralytics / YOLOv11 / YOLOv8通用,视频及摄像头均可使用。
YOLOv11环境配置教程如下。目标检测:YOLOv11(Ultralytics)环境配置,适合0基础纯小白,超详细_yolov11环境配置-CSDN博客文章浏览阅读7.8k次,点赞42次,收藏153次。YOLO11是Ultralytics公司YOLO系列实时目标检测器的最新迭代版本,它以尖端的准确性、速度和效率重新定义了可能实现的性能。在之前YOLO版本取得的显著进步基础上,YOLO11在架构和训练方法上进行了重大改进,使其成为各种计算机视觉任务中的通用选择。除了传统的目标检测外,YOLO11 还支持目标跟踪、实例分割、姿态估计、OBB定向物体检测(旋转目标检测)等视觉任务。如果已经会配置YOLOv8的环境,本文不需要重复配置,下载最新的YOLOv11训练文件即可。_yolov11环境配置https://blog.csdn.net/qq_67105081/article/details/143270109?spm=1001.2014.3001.5502
主要使用ultralytics的solutions.ObjectCounter中count方法(不同版本函数名称不一样,但是YOLOv11往后都是count函数),具体代码如下,本文代码需搭配ultralytics8.3.20版本 下载 。
import cv2
from ultralytics import YOLO, solutionscap = cv2.VideoCapture("dog.mp4")
assert cap.isOpened(), "读取视频异常"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))region_points = [(20, 400), (700, 400), (700, 360), (20, 360)] video_writer = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))counter = solutions.ObjectCounter(model = "yolo11n.pt",region=region_points,show_in=True,show_out=True
)
while cap.isOpened():success, im0 = cap.read()if not success:print("视频处理完成")breakcv2.putText(im0, f"Total:{counter.in_count + counter.out_count}", (80, 80), cv2.FONT_HERSHEY_SIMPLEX, 1,(255, 0, 0), 2)im0 = counter.count(im0)video_writer.write(im0)cap.release()
video_writer.release()
cv2.destroyAllWindows()
使用时需要修改region_point为自选区域,可以多个点组合成多边形,也可以两个点连成一条直线,系统会自动识别。实测ultralytics8.2.0版本多边形效果最好,可以实现检测时修改自选框位置,需要代码可以 下载 ,相应的函数也需要对应修改。
import cv2from ultralytics import YOLO, solutionsmodel = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("dog.mp4")
assert cap.isOpened(), "读取视频异常"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))region_points = [(20, 400), (700, 400), (700, 360), (20, 360)] video_writer = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))counter = solutions.ObjectCounter(view_img=True,reg_pts=region_points,names=model.names,draw_tracks=True,line_thickness=2,view_in_counts=True,view_out_counts=True,
)
while cap.isOpened():success, im0 = cap.read()if not success:print("视频处理完成")breaktracks = model.track(im0, persist=True, show=False)cv2.putText(im0, f"Total:{counter.in_counts + counter.out_counts}", (80, 80), cv2.FONT_HERSHEY_SIMPLEX, 1,(255, 0, 0), 2)im0 = counter.start_counting(im0, tracks)video_writer.write(im0)cap.release()
video_writer.release()
cv2.destroyAllWindows()
效果展示如下,目标经过自选框则计入in,离开自选框则计入out,总数在左侧显示,跟踪轨迹显示为线条(默认YOLOv11n效果一般,自训练模型效果较好)。
运行完代码后检测结果会保存为视频,本文给出代码为默认的opencv代码,如需较为完整的使用pyqt5界面写出的视频或摄像头检测代码,可私聊获取,有其它需求欢迎私聊定制,如有大佬有好的想法也欢迎一起讨论。
相关文章:

YOLOv11(Ultralytics)视频选定区域目标统计计数及跟踪
在计算机视觉的众多应用场景中,对特定区域的目标进行检测、跟踪与计数是一个常见且重要的需求。无论是在智慧交通中统计通过特定路口的车辆数量,还是在零售分析中追踪进入特定区域的顾客行为,这一功能都发挥着不可或缺的作用。 随着深度学习…...

24小时自动监控,自动录制直播蓝光视频!支持抖音等热门直播软件
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 工具特点📒📝 使用🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 对于许多直播爱好者和内容创作者而言,错过心爱的直播或难以搜集视频素材始终是一个难题。今天,给大家分享的这款工具可以轻松解决这个问题,它拥有…...

InfiniBand(IB)快速上手
什么是IB: InfiniBand(直译为“无限带宽”技术,缩写为IB)是一个用于高性能计算的计算机网络通信标准,它具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。InfiniBand也用作服务器与存储系…...

D74【 python 接口自动化学习】- python 基础之HTTP
day74 http基础定义 学习日期:20241120 学习目标:http定义及实战 -- http基础介绍 学习笔记: HTTP定义 HTTP 是一个协议(服务器传输超文本到浏览器的传送协议),是基于 TCP/IP 通信协议来传递数据&…...

移动光猫[HS8545M5-10]获取超密
移动光猫[HS8545M5-10]获取超级密码 1、缘由2、前期准备2.1、确保本地开通telnet客户端功能2.2、准备好相关软件 3、开始查找超密 1、缘由 最近想折腾一下ipv6ddns打通内外网,查询资料说是需要将光猫桥接到外网;但是使用光猫后边的用户名密码根本就找不到…...
原生JS和CSS,HTML实现开屏弹窗
开屏弹窗常应用于打开游戏,或者打开网站的时候,跳出来在正中间,来显示一些信息,并可以设置今日不再显示 CSS代码如下 <style>#box {width: 100vw;height: 100vh;background-color: rgba(0, 0, 0, 0.2);position: relative…...

vue--制作购物车
🤔如何制作出下列效果呢?👇 😶🌫️首先: 设置css样式: <style>body {font-family: Arial, sans-serif;}.cart-item {width: 50%;margin-bottom: 15px;padding: 10px;border: 2px solid gray;borde…...

深度测评腾讯云 HAI 智算服务:高性能 AI 计算的新标杆
本文 一、引言二、产品功能深度解析2.1 多样化的 GPU 配置选择2.2 预配置开发环境示例: 2.3 实时性能监控 三、核心技术特点与优势3.1 云端弹性扩展3.2 高性能计算架构 四、实际测试与代码案例4.1 NLP 案例:使用 BERT 进行情感分类数据集:IMD…...
MQ重复消费与消息顺序
如何避免消息重复消费 RocketMQ:给每个消息分配了一个MessageID。这个MessageID就可以作为消费者判断幂等的依据。这种方式不太建议,原因是在高并发场景下这个MessageID不保证全局唯一性。 最好由业务方创建一个与业务相关的全局唯一的ID来区分消息&am…...

应用商店双弹窗“APP在向用户申请权限时未同步告知用户申请此权限的理由”驳回uni-app应用上线的解决方法
目录 问题分析 解决方法 下载插件包:x-perm-apply-instr 将插件包导入进你项目中的uni_modules文件夹 在项目中的main.js文件中添加以下代码 完成 其它注意事项 addPermisionInterceptor 添加 uniApi 调用拦截 removePermisionInterceptor 移除 uniApi 调用…...
第 32 章 - Go语言 部署与运维
在Go语言的应用开发中,部署与运维是一个非常重要的环节。它不仅关系到应用能否顺利上线,还直接影响到应用的性能、安全性和可维护性。以下是根据您的需求整理的关于Go语言应用的打包和发布、容器化部署、监控和日志管理的相关内容。 1. 应用的打包和发布…...

噪杂环境离线语音通断器效果展示
介于之前的离线语音通断器模块的使用环境大部分为噪音比较小的环境中,部分客户对环境提出了更高的要求,能在噪杂、室外或者有一定的噪音的车内使用的模块开发需求被提高到了一个新的层次。最近找到某些能支持室外噪杂环境使用的芯片和模组,打…...
【django】扩展
1. Promise 1.1 对象和状态 是什么?是前端开发时js中的一个对象(包裹)。【对象】【异步请求】# 对象中有一个状态的值,status # 创建对象,不赋值,statuspendding let v1 new Promise(function(resolve, …...

逆向破解识别基础
找main函数: (使用OllyDbg软件) 方法一: 因为main函数需要三个参数,所以遇到三个参数加一个调用,那么可能是main函数。 方法二: 如果main函数中有字符串或者调用函数等一些唯一标识&#x…...
MFC 下拉框显示问题和控件自适应窗口大小
在mfc开发过程中,遇到了下拉框的两个问题,现在记录一下 1、把下拉框点开显示不全我放进去的多条文本 解决办法:把鼠标放到下拉框的倒三角去点一下,鼠标就会变成双向箭头,或者先选中一下下拉框再把鼠标移动到倒三角上去…...

Docker 的存储驱动及其优缺点
Docker 的存储驱动是容器文件系统的关键组成部分,决定了容器镜像和数据的存储方式。以下是常见的存储驱动及其优缺点: 1. OverlayFS/Overlay2 简介: Overlay 是现代 Linux 文件系统中一种高效的联合文件系统,Overlay2 是其改进版本࿰…...
单片机系统的性能指标有哪些?
单片机系统的性能指标涵盖了多个方面,这些指标共同决定了系统的整体性能。以下是单片机系统中常见的性能指标: 1. 处理器性能指标 1.1 时钟频率(Clock Frequency) 定义:处理器内核工作的时钟频率,通常以…...
波点音乐自动点击
波点音乐 import uiautomator2 as u2 import time import sys import os# 动态点击时间,打印剩余时间 def dynamic_sleep(seconds):wait_time secondsfor i in range(wait_time):print(f"Waiting... {wait_time - i} seconds remaining")sys.stdout.flu…...
HTTP 消息结构
HTTP 消息结构 1. 引言 超文本传输协议(HTTP)是互联网上应用最广泛的协议之一,它定义了客户端和服务器之间交换数据的格式和规则。HTTP消息是客户端和服务器之间通信的基本单位,包括请求消息和响应消息两种类型。本文将详细介绍HTTP消息的结构,包括其组成部分和格式。 …...

ESP32学习笔记_Bluetooth(1)——蓝牙技术与 BLE 通信机制简介
摘要(From AI): 这篇笔记详细讲解了蓝牙技术的分类、核心架构和通信流程,重点介绍了低功耗蓝牙(BLE)的协议栈、角色划分及连接机制,结合拓扑示例清晰阐述了蓝牙网络配置和操作过程 前言:本文档是本人在《ESP32-C3 物联…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...

初探用uniapp写微信小程序遇到的问题及解决(vue3+ts)
零、关于开发思路 (一)拿到工作任务,先理清楚需求 1.逻辑部分 不放过原型里说的每一句话,有疑惑的部分该问产品/测试/之前的开发就问 2.页面部分(含国际化) 整体看过需要开发页面的原型后,分类一下哪些组件/样式可以复用,直接提取出来使用 (时间充分的前提下,不…...

Linux入门(十五)安装java安装tomcat安装dotnet安装mysql
安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了,系统很多命…...

PLC入门【4】基本指令2(SET RST)
04 基本指令2 PLC编程第四课基本指令(2) 1、运用上接课所学的基本指令完成个简单的实例编程。 2、学习SET--置位指令 3、RST--复位指令 打开软件(FX-TRN-BEG-C),从 文件 - 主画面,“B: 让我们学习基本的”- “B-3.控制优先程序”。 点击“梯形图编辑”…...

Pandas 可视化集成:数据科学家的高效绘图指南
为什么选择 Pandas 进行数据可视化? 在数据科学和分析领域,可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具,如 Matplotlib、Seaborn、Plotly 等,但 Pandas 内置的可视化功能因其与数据结…...
【Redis】Redis从入门到实战:全面指南
Redis从入门到实战:全面指南 一、Redis简介 Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,它可以用作数据库、缓存和消息代理。由Salvatore Sanfilippo于2009年开发,因其高性能、丰富的数据结构和广泛的语言支持而广受欢迎。 Redis核心特点:…...