做企业内部管理网站要多久,设计公司股权分配方案,吉大建设工程学院官方网站,网页设计师培训机构费用价格多少yolov8 区域报警计数 1. 基础2. 报警功能2. 1声音报警代码2. 2画面显示报警代码 3. 完整代码4. 源码 1. 基础
本项目是在 yolov8 区域多类别计数 的基础上实现的#xff0c;具体区域计数原理可见上边文章
2. 报警功能
设置一个区域region_points#xff0c;当行人这一类别… 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 pygamedef is_inside_region(point, region_points):判断点是否在指定区域内return cv2.pointPolygonTest(np.array(region_points), point, False) 0def 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 filewhile 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, persistTrue)annotated_frame tracks[0].plot()boxes tracks[0].boxes.datacount_class1 0count_class2 0for i, box in enumerate(boxes):x1, y1, x2, y2 box[:4]x_center (x1 x2) / 2y_center (y1 y2) / 2center_point (int(x_center), int(y_center))if is_inside_region(center_point, region_points):if box[-1] 0: # 类别1的标签.人count_class1 1pygame.mixer.init()pygame.mixer.music.load(out.wav)pygame.mixer.music.set_volume(1)pygame.mixer.music.play()text ALARMcv2.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], isClosedTrue, color(255, 0, 0), thickness2)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):breakout_video.release()cap.release()cv2.destroyAllWindows()
if __name__ __main__:detect()4. 源码
下载链接https://download.csdn.net/download/qq_45077760/89212535
有问题可以在评论区交流