yolov8 区域声光报警+计数

yolov8 区域报警+计数

  • 1. 基础
  • 2. 报警功能
    • 2. 1声音报警代码
    • 2. 2画面显示报警代码
  • 3. 完整代码
  • 4. 源码

1. 基础

本项目是在 yolov8 区域多类别计数 的基础上实现的,具体区域计数原理可见上边文章

2. 报警功能

设置一个区域region_points,当行人这一类别进入该区域范围内,会触发报警系统,产生警报

2. 1声音报警代码

pygame.mixer.init()  # 初始化
pygame.mixer.music.load('out.wav')  # 加载报警音源
pygame.mixer.music.set_volume(1)   # 设置声音
pygame.mixer.music.play()  # 播放音乐

2. 2画面显示报警代码

text = "ALARM"
cv2.putText(annotated_frame, text, (600, 300), cv2.FONT_ITALIC, 2.0,(0, 0, 255), 3)

请添加图片描述

3. 完整代码


import cv2
import numpy as np
from ultralytics import YOLO
import pygame

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

def detect():

    model = YOLO("yolov8n.pt")
    cv2.namedWindow('region couter', cv2.WINDOW_NORMAL)
    cv2.resizeWindow('region couter', 960, 540)  # 设置宽高
    cap = cv2.VideoCapture('ultralytics/assets/people.mp4')
    out_video = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'XVID'), 30, (1920, 1080))

    region_points = [(640, 270), (640, 540), (1280, 540), (1280, 270)]
    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.")
            break
        tracks = model.track(im0, persist=True)
        annotated_frame = tracks[0].plot()
        boxes = tracks[0].boxes.data
        count_class1 = 0
        count_class2 = 0
        for i, box in enumerate(boxes):
            x1, y1, x2, y2 = box[:4]
            x_center = (x1 + x2) / 2
            y_center = (y1 + y2) / 2
            center_point = (int(x_center), int(y_center))
            if is_inside_region(center_point, region_points):
                if box[-1] == 0:  # 类别1的标签.人
                    count_class1 += 1
                    pygame.mixer.init()
                    pygame.mixer.music.load('out.wav')
                    pygame.mixer.music.set_volume(1)
                    pygame.mixer.music.play()
                    text = "ALARM"
                    cv2.putText(annotated_frame, text, (960, 400), cv2.FONT_ITALIC, 2.0,(0, 255, 255), 3)

                elif  box[-1] == 2:  # 类别2的标签,车
                    count_class2 += 1
        # cv2.polylines(annotated_frame, [region_points_np], isClosed=True, color=(255, 0, 0), thickness=2)
        region_mask = np.zeros_like(annotated_frame)
        cv2.fillPoly(region_mask, [region_points_np], color=(255, 0, 0))
        # 使用透明度将填充后的区域与原始帧混合
        alpha = 0.3  # 调整透明度
        annotated_frame = cv2.addWeighted(annotated_frame, 1 - alpha, region_mask, alpha, 0)
        print("Number of objects in class 1:", count_class1)
        print("Number of objects in class 2:", count_class2)

        cv2.imshow("region couter", annotated_frame)
        out_video.write(annotated_frame)
        if cv2.waitKey(1) == ord('q'):
            break
    out_video.release()
    cap.release()
    cv2.destroyAllWindows()
if __name__ == '__main__':
    detect()

4. 源码

下载链接:https://download.csdn.net/download/qq_45077760/89212535

有问题可以在评论区交流

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合Swagger2

SpringBoot整合Swagger2 1.什么是Swagger2?(应用场景)2.项目中如何使用2.1 导入依赖2.2 编写配置类2.3 注解使用2.3.1 controller注解:2.3.2 方法注解2.3.3 实体类注解2.3.4 方法返回值注解2.3.5 忽略的方法 3.UI界面 1.什么是Swa…

FPGA组合逻辑电路设计之译码器

在数字电路中可以根据电路功能的不同分为,组合逻辑电路与时序逻辑电路。组合逻辑 电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无 关。而时序逻辑从电路特征上看来,其特点为任意时刻的输出不仅取决于该…

全网人气排行第一的免费开源ERP:Odoo电商功能应用亮点介绍

Odoo E-Commerce是一款创新型电子商务管理系统,旨在帮助企业建立以客户为中心的B2B与B2C电子商务平台,提高电商业务敏捷性,保障利润,并确保客户体验战略与时俱进。 —— 开源智造Odoo老杨 什么是Odoo免费开源电商管理系统&#xf…

Vue3引入高德地图js API 2.0

文章目录 前言一、地图加载1.本文准备环境2.引入库3.加载地图4.加载地图控件 二、POI搜索1.什么是poi搜索2.如何使用 三、绘制点标记与信息窗体1.场景描述2.案例3.信息窗体-链接路由跳转4.进阶-通过Marker自动触发标记点(非鼠标手动点击) 四、jsApi地图事…

文献速递:深度学习胶质瘤诊断---空间细胞结构预测胶质母细胞瘤的预后

Title 题目 Spatial cellular architecture predicts prognosis in glioblastoma 空间细胞结构预测胶质母细胞瘤的预后 01文献速递介绍 胶质母细胞瘤的治疗耐药性的关键驱动因素是肿瘤内的异质性和细胞状态的可塑性。在这里,我们调查了空间细胞组织与胶质母细胞瘤…

聚道云一键打通金蝶宁波银行,财务效率暴涨10倍!

客户介绍: 某农资有限公司是一家集农资贸易、仓储物流、农机服务为一体的大型企业。随着业务规模的不断扩大,传统的手动财务操作模式已难以满足其需求。公司急需寻找一种方法,将金蝶财务软件与宁波银行对接,实现资金流转自动化和…

深入解析YOLOv2

深入解析YOLOv2 引言 目标检测是计算机视觉中的一个核心问题,它旨在识别图像中所有感兴趣的目标,并给出它们的类别和位置。近年来,随着深度学习技术的发展,目标检测领域取得了巨大的进步。YOLO(You Only Look Once&a…

Ozone V3.32a Jlink显示变量波形

目录 前言 Ozone 配合Jlink显示变量波形 导出数组查看高频变量波形 总结 前言 Ozone V3.32a使用总结-CSDN博客 前面介绍了Ozone的安装和使用,因为调试需要,要看一些数据的波形。这里总结两种用Ozone查看变量波形的方法。 Ozone 配合Jlink显示变量波…

CCF-A类!狂涨6.131分,中科院2区,无版面费的王者刊物!

计算机领域 顶级好刊解析 今天解析的是一本Springer期刊,2022JCR发布后影响因子由13.369涨至19.5,年底升区可能性很大,究竟期刊实力如何呢?详情请看下文: 01 期刊简介 International Journal of Computer Vision ✅…

JSON Web Token 入门

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。 一、跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后,在当前对话&…

Linux安装部署Tomcat

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Linux安装部署Tomcat //将tomcat压缩包解压到对…

Ts支持哪些类型和类型运算(下)

目录 1、条件判断 (extends ?) 2、推导 infer 3、联合 | 4、交叉 & 5、映射类型 1、条件判断 (extends ?) ts里的条件判断,语法为 T extends XXX ? true : false ,叫做…

比特币中的符文是什么?

比特币中的符文是什么? 比特币符文是存在于比特币区块链上的独特的、可替代的代币。它们旨在代表具有独特特征和元数据的可替代资产。 Ordinals 协议的创建者 Casey Rodamor 最近放弃了一项替代 BRC-20 可替代代币协议的提案,该替代方案被称为 Runes。 破…

JEECG/SpringBoot集成flowable流程框架

IDEA安装Flowable BPMN visualizer插件 pom.xml中引入flowable相关依赖 <dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>6.7.2</version></dependency><depe…

【STM32+HAL+Proteus】系列学习教程4---GPIO输入模式(独立按键)

实现目标 1、掌握GPIO 输入模式控制 2、学会STM32CubeMX配置GPIO的输入模式 3、具体目标&#xff1a;1、按键K1按下&#xff0c;LED1点亮&#xff1b;2、按键K2按下&#xff0c;LED1熄灭&#xff1b;2、按键K3按下&#xff0c;LED2状态取反&#xff1b; 一、STM32 GPIO 输入…

【JavaScriptthreejs】对于二维平面内的路径进行扩张或缩放

目标 对指定路径 [{x,y,z},{x,y,z},{x,y,z},{x,y,z}.........]沿着边缘向内或向外扩张&#xff0c;达到放大或缩小一定范围的效果&#xff0c;这里我们获取每个点&#xff08;这里是Vector3(x,y,z)&#xff09;,获取前后两个点和当前点的坐标&#xff0c;计算前后两点的向量&a…

autodesk系列软件安装错误1603,手动安装Autodesk Desktop Licensing Service之后,启动服务提示错误1067

一般Autodesk Desktop Licensing Service这个服务没安装或者不正常会导致autodesk系列软件安装错误1603或者其他报错。 手动安装Autodesk Desktop Licensing Service之后&#xff0c;启动服务提示错误1067&#xff0c; 解决方法如下 打开autoremove点击扩展功能&#xff0c;输…

Hindawi暴雷出局,Frontiers却积极整改,能否摘掉“水刊”标签?

【SciencePub学术】自从3月Hindawi暴雷后&#xff0c;MDPI和Frontiers也深受牵连&#xff0c;因其发文量太过猖獗&#xff0c;国人占比高&#xff0c;自引率高等因素&#xff0c;这些出版社旗下的期刊均被贴上“水刊”标签。 上期&#xff0c;小编已经详细介绍了MDPI期刊的口碑…

项目暂停和重启运行,命令如何实现?

要通过命令行实现项目的暂停和重启运行&#xff0c;可以使用以下步骤&#xff1a; 1.查找项目进程ID&#xff1a;首先&#xff0c;你需要找到正在运行项目的进程ID&#xff08;PID&#xff09;。你可以使用 ps 命令来查找正在运行的进程&#xff0c;例如&#xff1a; ps aux …

客户关系智慧:CRM系统五大功能助力企业发展

CRM软件必备功能有“销售自动化、销售流程管理、全渠道沟通平台、BI数据分析以及销售活动管理。” 一家业务流程完善的公司&#xff0c;总是少不了提到CRM。对CRM还尚不可知的企业可能会疑惑了——总是听到别人提到CRM&#xff0c;CRM到底有哪些功能&#xff1f;这些功能又怎么…
最新文章