yolov8 区域计数

yolov8 区域计数

  • 1. 基础
  • 2. 计数功能
    • 2.1 计数模块
    • 2.2 判断模块
  • 3. 主代码
  • 4. 实验结果
  • 5. 源码

1. 基础

本项目是在 Windows+YOLOV8环境配置 的基础上实现的,测距原理可见上边文章

2. 计数功能

2.1 计数模块

在指定区域内计数模块

def count_objects_in_region(boxes, region_points):"""在指定区域内计数物体"""count = 0for box in boxes:x_center, y_center, width, height = boxcenter_point = (int(x_center), int(y_center))if is_inside_region(center_point, region_points):count += 1return count

2.2 判断模块

def is_inside_region(point, region_points):"""判断点是否在指定区域内"""return cv2.pointPolygonTest(np.array(region_points), point, False) >= 0

3. 主代码


import cv2
import numpy as np
from ultralytics import YOLOdef is_inside_region(point, region_points):"""判断点是否在指定区域内"""return cv2.pointPolygonTest(np.array(region_points), point, False) >= 0def count_objects_in_region(boxes, region_points):"""在指定区域内计数物体"""count = 0for box in boxes:x_center, y_center, width, height = boxcenter_point = (int(x_center), int(y_center))if is_inside_region(center_point, region_points):count += 1return countdef detect():model = YOLO("yolov8n.pt")cv2.namedWindow('Speed Estimation', cv2.WINDOW_NORMAL)cv2.resizeWindow('Speed Estimation', 1280, 360)  # 设置宽高cap = cv2.VideoCapture('ultralytics/assets/a3.mp4')out_video = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'XVID'), 30, (2560, 720))region_points = [(20, 20), (20, 600), (1200, 600), (1200, 20)]region_points_np = np.array(region_points)assert cap.isOpened(), "Error reading video file"while cap.isOpened():success, im0 = cap.read()if not success:print("Video frame is empty or video processing has been successfully completed.")breaktracks = model.track(im0, persist=True,classes=[2])annotated_frame = tracks[0].plot()boxes = tracks[0].boxes.xywh.cpu()object_count = count_objects_in_region(boxes, region_points)cv2.polylines(annotated_frame, [region_points_np], isClosed=True, color=(255, 0, 0), thickness=2)print(object_count)cv2.imshow("Speed Estimation", annotated_frame)out_video.write(annotated_frame)if cv2.waitKey(1) == ord('q'):breakout_video.release()cap.release()cv2.destroyAllWindows()
if __name__ == '__main__':detect()

4. 实验结果

本实验现在仅设置计数某一种类别的数目,对于多类别的计数后续会更新
在这里插入图片描述

5. 源码

可以去 Windows+YOLOV8环境配置 下载源码,然后把上边主代码贴进去运行即可

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

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

相关文章

STM32 堆栈内存以及变量存储分布

STM32的程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内, 地址范围为0x0000 0000至0xFFFF FFFF。其中FLASH为ROM类型,储存的数据掉电不易失;RAM中存储的数据掉电易失。以STM32F103系列为例,最多有512KB的FLA…

Discuz! X3.4 升级至 Discuz! X3.5 详细教程

第一步:从其他以前的 Discuz! X 版本升级Discuz! X3.4 请先升级到Discuz! X3.4,升级教程网上比较普遍,在此不再论述。 第二步:Discuz! X3.4 升级至 Discuz! X3.5 (Discuz 从 X3.5 以后,不在发布GBK版本&…

【软考】UML中的图之类图

目录 1. 说明2. 图示3. 类图使用方式3.1 对系统的词汇建模3.2 对简单的协作建模3.3 对逻辑数据库模式建模 1. 说明 1.类图(Class Diagram)展现了一组对象、接口、协作和它们之间的关系。2.在面向对象系统的建模中所建立的最常见的图是类图。3.类图给出系…

离线数仓数据导出-hive数据同步到mysql

离线数仓数据导出-hive数据同步到mysql MySQL建库建表数据导出 为方便报表应用使用数据,需将ads各指标的统计结果导出到MySQL数据库中。 datax支持hive同步MySQL:仅仅支持hive存储的hdfs文件导出。所以reader选hdfs-reader,writer选mysql-wri…

python输入输出特殊处理

输出 需要满足输出一行后,再输出一行,行中每个元素用空格隔开 length len(tri) tmp [] for i in range(len(tri)):tmp tri[i]for j in range(len(tri[i])):print(tmp[j],end )print()输入p 一次性输入6个数字到列表中,并且输入的每个数…

怎样在外网登录访问CRM管理系统?

一、什么是CRM管理系统? Customer Relationship Management,简称CRM,指客户关系管理,是企业利用信息互联网技术,协调企业、顾客和服务上的交互,提升管理服务。为了企业信息安全以及使用方便,企业…

SSM小程序作品集展示微信小程序

采用技术 SSM小程序作品集展示微信小程序的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringMVCMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 用户功能 用户注册 用户首页 作品集 优秀作者 我的分享 管…

Linux嵌入式驱动开发-内核定时器

文章目录 内核时间管理处理jiffies绕回的APIExample:使用 jiffies 判断超时jiffies与ms、us、ns转换的API 内核定时器内核定时器APIinit_timer: 初始化 timer_list 类型变量add_timer: 向 Linux 内核注册定时器del_timer: 删除一个定时器del_timer_sync: del_timer …

powershell@命令行提示符样式配置自定义@pwsh重写prompt显示电量内存时间等信息

文章目录 abstract流行的powershell prompt模块示例 powershell原生修改Prompt函数配置文档Prompt命令来自哪里 简单修改带上电量和时间的Prompt 复杂修改预览FAQ:没有必要修改相关仓库地址样式选择平衡样式花哨样式响应性能 小结 abstract 在 PowerShell 中,可以通…

CSDN积分和等级和 能创建专栏数量的关系。还差1000多分!

积分查询:CSDN 博客积分规则 博客积分是CSDN对用户努力的认可和奖励,也是衡量博客水平的重要标准。博客等级也将由博客积分唯一决定。积分规则具体如下: 1、每发布一篇原创或者翻译文章:可获得10分; 2、每发布一篇转载…

做一个答题pk小程序多少钱

在探讨“做一个答题pk小程序多少钱”这一问题时,我们首先需要明确的是,小程序的价格并非固定不变,而是受到多种因素的影响。这些因素包括但不限于小程序的复杂度、功能需求、开发周期、技术难度以及开发团队的规模和经验等。因此,…

Docker-volume创建数据卷

创建一个名为myvol的数据卷: [rootlocalhost ~]# docker volume create myvol myvol[rootlocalhost ~]# docker volume ls DRIVER VOLUME NAME local myvol查看数据卷: [rootlocalhost ~]# docker volume inspect myvol [{&…

Web前端 JavaScript笔记7

js的执行机制 js是单线程 同步:前面一个任务执行结束之后,执行后一个 异步:异步任务,引擎放在一边,不进入主线程,而进入任务队列的任务 js通过浏览器解析,浏览器靠引擎解析 回调函数同步任务执行…

微服务与Web服务:定义、优势、挑战与实践指南20240416

引言 在当前的软件开发领域,微服务和Web服务是两个频繁被讨论的术语。随着企业应用的复杂性和规模的增加,深入理解这两种服务架构的优势和挑战变得极为关键。本文将探讨微服务和Web服务的核心概念、优缺点,并通过Go语言示例展示它们的实现。…

LabVIEW卡尔曼滤波技术

LabVIEW卡尔曼滤波技术 在现代航空导航中,高精度和快速响应的方位解算对于航空安全至关重要。通过LabVIEW平台实现一种卡尔曼滤波方位解算修正技术,以改善传统导航设备在方位解算中的噪声干扰问题,从而提高其解算精度和效率。通过LabVIEW的强…

新媒体短视频运营之抖音的19种流量变现模式

本文中谈的有带货类、广告推广类、团购类、任务推广类等多种抖音变现方式,包括图文带货、视频带货、抖店带货、直播带货等,适合个人博主、商家和企业等不同用户群体。 同时,还介绍了中视频计划、剪映创作人、看见音乐计划等变现路径。 1、图文带货 开通要求:0粉即可开通…

Java基础之JVM基础调优与常见问题

常见命令 以下命令的介绍,全部在jdk8环境下运行的; jps ☆☆☆☆☆ 查看当前运行的进程号; jmap ☆☆☆ jmap命令可以查看jvm的内存信息,class对应的实例个数以及占用的内存大小 jmap -histo 查看当前java进程 [rdVM-8-12-c…

Ugee手写板Ex08 S设置流程

手写笔的结构 笔尖 鼠标左键 上面第一个键:鼠标右键(效果有时候也不完全等同) 上面第二个键:鼠标中键 WPS ①打开pdf ②批注->随意画->画曲线 效果如下:

定时执行专家 - 高级功能详解 - 关联任务设置

◆ 需求场景 AB两个任务,A任务每隔 10分钟执行一次;A任务执行完1分钟(60秒)之后,再执行B任务。这种情况就需要用到“关联任务”功能。 此处以“日程提醒”、“执行Nircmd命令”举例。A任务设置:日程提醒&…

小程序中使用HTTPS调用自带文本安全内容检测接口(msg_sec_check)的实现方法

在小程序中调用自带的文本安全内容检测接口,你需要使用小程序提供的wx.request方法。以下是一个示例代码: javascript代码: // 假设你已经获取了access_token,如果不知道如何获取,可以参考我上一篇文章 const access_token 你的access_tok…