公司seo推广营销网站,金华企业做网站,网络营销有用吗,seo诊断分析报告使用 YOLOv8 的 results.xyxy 结构#xff0c;下面是一个完整的 MQTT 推送脚本#xff0c;用于把识别到的目标#xff08;比如突涌水、水渍、障碍物等#xff09;发送到 Frigate 的 MQTT 接口。✅ 前提假设
YOLOv8 推理代码已经运行并生成 results.xyxy。每一行是 [x1, y1,…使用 YOLOv8 的 results.xyxy 结构下面是一个完整的 MQTT 推送脚本用于把识别到的目标比如突涌水、水渍、障碍物等发送到 Frigate 的 MQTT 接口。✅ 前提假设
YOLOv8 推理代码已经运行并生成 results.xyxy。每一行是 [x1, y1, x2, y2, conf, class_id]。类别标签由你自己定义如 model.names[class_id]。MQTT 服务运行在本地或局域网默认端口 1883。Frigate 配置正确监听 frigate/events 主题。完整 Python 脚本YOLOv8 MQTT 发事件
import paho.mqtt.publish as publish
import uuid
import json
from ultralytics import YOLO
import cv2# ---------- 你可以自定义的变量 ----------
MQTT_HOST 127.0.0.1 # Mosquitto服务器地址
MQTT_PORT 1883 # MQTT端口
FRIGATE_TOPIC frigate/events
CAMERA_NAME usb_cam # Frigate中配置的摄像头名
DETECTION_CONFIDENCE_THRESHOLD 0.5
# ----------------------------------------# 加载你训练好的YOLOv8模型
model YOLO(best.pt) # 改成你的模型路径# 读取图片/视频帧你可以用cv2.VideoCapture循环处理流
frame cv2.imread(test.jpg) # 或者循环处理帧# 推理
results model(frame)# 遍历检测结果默认只有一张图
for r in results:boxes r.boxes.xyxy.cpu().numpy() # shape: (n, 4)scores r.boxes.conf.cpu().numpy() # shape: (n,)classes r.boxes.cls.cpu().numpy().astype(int)for i in range(len(boxes)):conf scores[i]if conf DETECTION_CONFIDENCE_THRESHOLD:continue # 忽略低置信度结果box boxes[i]class_id classes[i]label model.names[class_id] # 类别名payload {type: new,after: {id: str(uuid.uuid4()),camera: CAMERA_NAME,label: label,top_score: float(conf),box: {x_min: int(box[0]),y_min: int(box[1]),x_max: int(box[2]),y_max: int(box[3])}}}# 发布到 MQTTpublish.single(topicFRIGATE_TOPIC,payloadjson.dumps(payload),hostnameMQTT_HOST,portMQTT_PORT)print(f已发送检测事件: {label} ({conf:.2f}))示例运行流程
替换你的模型路径和摄像头名称与你 Frigate 中的一致放一张测试图片 test.jpg运行脚本Frigate 界面就能看到事件了。可选增强目标实现方式处理实时摄像头流cv2.VideoCapture() 读取帧循环处理支持多帧批量推送放在循环中设置时间间隔显示检测图像用 cv2.rectangle() 可视化框注意事项
MQTT 消息中 camera 字段必须是 Frigate 配置文件中的某个摄像头名。box 坐标建议使用整数。YOLO 推理较慢时注意控制帧率不要每帧都发可 1~2 秒一次。如果你在 Windows 下网络受限确保 Frigate、MQTT、这个脚本三者之间是能连通的用 127.0.0.1 通常没问题。