使用 YOLOv8 的 results.xyxy 结构,下面是一个完整的 MQTT 推送脚本,用于把识别到的目标(比如突涌水、水渍、障碍物等)发送到 Frigate 的 MQTT 接口。


✅ 前提假设

  1. YOLOv8 推理代码已经运行并生成 results.xyxy
  2. 每一行是 [x1, y1, x2, y2, conf, class_id]
  3. 类别标签由你自己定义,如 model.names[class_id]
  4. MQTT 服务运行在本地(或局域网),默认端口 1883。
  5. 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(topic=FRIGATE_TOPIC,payload=json.dumps(payload),hostname=MQTT_HOST,port=MQTT_PORT)print(f"已发送检测事件: {label} ({conf:.2f})")

🧪 示例运行流程

  1. 替换你的模型路径和摄像头名称(与你 Frigate 中的一致);
  2. 放一张测试图片 test.jpg
  3. 运行脚本,Frigate 界面就能看到事件了。

📌 可选增强

目标实现方式
处理实时摄像头流cv2.VideoCapture() 读取帧循环处理
支持多帧批量推送放在循环中,设置时间间隔
显示检测图像cv2.rectangle() 可视化框

🚨 注意事项

  • MQTT 消息中 camera 字段必须是 Frigate 配置文件中的某个摄像头名。
  • box 坐标建议使用整数。
  • YOLO 推理较慢时注意控制帧率,不要每帧都发(可 1~2 秒一次)。
  • 如果你在 Windows 下网络受限,确保 Frigate、MQTT、这个脚本三者之间是能连通的(用 127.0.0.1 通常没问题)。

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

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

相关文章

安装llama-factory报错 error: subprocess-exited-with-error

报错信息如下 Using cached https://mirrors.aliyun.com/pypi/packages/17/89/940a509ee7e9449f0c877fa984b37b7cc485546035cc67bbc353f2ac20f3/av-15.0.0.tar.gz (3.8 MB)Preparing metadata (pyproject.toml) ... errorerror: subprocess-exited-with-error Preparing metad…

QT 多线程 管理串口

记录一下自己使用多线程进行串口管理和数据读取的过程。如果有问题的话可以发消息给我。背景在使用QT制作一个串口数据读取处理的小软件的时候&#xff0c;发现了存在界面卡顿的情况&#xff0c;感觉性能太低&#xff0c;于是考虑把串口数据的读取和处理都放到子线程的缓冲区中…

在虚拟环境中复现论文(环境配置)

前提&#xff1a;已经下载condawinR&#xff0c;输入cmd进入命令行conda create -n PPT python3.8.3 pytorch1.7.0conda create -n PPT(虚拟环境名) python3.8.3(包名) pytorch1.7.0(包名)安装完毕&#xff0c;激活虚拟环境&#xff1a;conda activate PPT根据论文readme要求安…

Flutter Web 的发展历程:Dart、Flutter 与 WasmGC

Flutter Web 应该是 Flutter 开发者里最不“受宠”的平台了&#xff0c;但是其实 Flutter 和 Dart 团队对于 Web 的投入一直没有减少&#xff0c;这也和 Flutter 还有 Dart 的"出生"有关系&#xff0c;今天就借着 Dart 团队的 mer Ağacan 和 Martin Kustermann 在油…

c#方法关键字,ref、out、int

在 C# 中&#xff0c;ref、out 和 in 是用于方法参数传递的关键字&#xff0c;它们控制参数如何在方法和调用者之间传递数据。以下是对这三个关键字的详细分析&#xff1a;1. ref 关键字&#xff08;引用传递&#xff09;作用允许方法修改调用者的变量&#xff1a;通过引用传递…

设计模式—初识设计模式

1.设计模式经典面试题分析几个常见的设计模式对应的面试题。1.1原型设计模式1.使用UML类图画出原型模式核心角色&#xff08;意思就是使用会考察使用UML画出设计模式中关键角色和关系图等&#xff09;2.原型设计模式的深拷贝和浅拷贝是什么&#xff0c;写出深拷贝的两种方式的源…

深度学习-参数初始化、损失函数

A、参数初始化参数初始化对模型的训练速度、收敛性以及最终的性能产生重要影响。它可以尽量避免梯度消失和梯度爆炸的情况。一、固定值初始化在神经网络训练开始时&#xff0c;将权重或偏置初始化为常数。但这种方法在实际操作中并不常见。1.1全零初始化将所有的权重参数初始化…

格密码--Ring-SIS和Ring-LWE

1. 多项式环&#xff08;Polynomial Rings&#xff09; 设 f∈Z[x]f \in \mathbb{Z}[x]f∈Z[x] 是首一多项式&#xff08;最高次项系数为1&#xff09; 则环 RZ[x]/(f)R \mathbb{Z}[x]/(f)RZ[x]/(f) 元素为&#xff1a;所有次数 <deg⁡(f)< \deg(f)<deg(f) 的多项式…

前端工作需要和哪些人打交道?

前端工作中需要协作的角色及协作要点 前端工作中需要协作的角色及协作要点 前端开发处于产品实现的 “中间环节”,既要将设计方案转化为可交互的界面,又要与后端对接数据,还需配合团队推进项目进度。日常工作中,需要频繁对接的角色包括以下几类,每类协作都有其核心目标和…

万字长文解析 OneCode3.0 AI创新设计

一、研究概述与背景 1.1 研究背景与意义 在 AI 技术重塑软件开发的浪潮中&#xff0c;低代码平台正经历从 “可视化编程” 到 “意图驱动开发” 的根本性转变。这种变革不仅提升了开发效率&#xff0c;更重新定义了人与系统的交互方式。作为国内领先的低代码平台&#xff0c;On…

重学前端006 --- 响应式网页设计 CSS 弹性盒子

文章目录盒模型一、盒模型的基本概念二、两种盒模型的对比 举例三、总结Flexbox 弹性盒子布局一、Flexbox 的核心概念​​二、Flexbox 的基本语法​​​​1. 定义 Flex 容器​​​2. Flex 容器的主要属性​​​​3. Flex 项目的主要属性​​​​三、Flexbox 的常见布局示例​​…

rLLM:用于LLM Agent RL后训练的创新框架

rLLM&#xff1a;用于LLM Agent RL后训练的创新框架 本文介绍了rLLM&#xff0c;一个用于语言智能体后训练的可扩展框架。它能让用户轻松构建自定义智能体与环境&#xff0c;通过强化学习进行训练并部署。文中还展示了用其训练的DeepSWE等智能体的出色表现&#xff0c;以及rLL…

rocky8 --Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】

软件说明&#xff1a; 所有软件包下载地址&#xff1a;Past Releases of Elastic Stack Software | Elastic 打开页面后选择对应的组件及版本即可&#xff01; 所有软件包名称如下&#xff1a; 架构拓扑&#xff1a; 集群模式&#xff1a; 单机模式 架构规划&#xff1a…

【JVM】内存分配与回收原则

在 Java 开发中&#xff0c;自动内存管理是 JVM 的核心能力之一&#xff0c;而内存分配与回收的策略直接影响程序的性能和稳定性。本文将详细解析 JVM 的内存分配机制、对象回收规则以及背后的设计思想&#xff0c;帮助开发者更好地理解 JVM 的 "自动化" 内存管理逻辑…

Qt获取hid设备信息

Qt 中通过 HID&#xff08;Human Interface Device&#xff09;接口获取指定的 USB 设备&#xff0c;并读取其数据。资源文件中包含了 hidapi.h、hidapi.dll 和 hidapi.lib。通过这些文件&#xff0c;您可以在 Qt 项目中实现对 USB 设备的 HID 接口调用。#include <QObject&…

Anaconda Jupyter 使用注意事项

Anaconda Jupyter 使用注意事项 1.将cell转换为markdown。 First, select the cell you want to convertPress Esc to enter command mode (the cell border should turn blue)Press M to convert the cell to Markdown在编辑模式下按下ESC键&#xff0c;使单元块&#xff08;c…

[硬件电路-20]:模拟信号处理运算与数字信号处理运算的相同点与不同点

模拟信号处理运算与数字信号处理运算是信号处理领域的两大核心方法&#xff0c;二者在信号形式、处理机制、性能特点和应用场景上存在显著差异&#xff0c;但也共享一些基础目标与理论支撑。以下从多个维度进行系统对比分析&#xff1a;一、相同点1. 核心目标一致信号变换与分析…

Redis 高频面试题

1. 缓存穿透 1.1 描述 用户想要查询某个数据,在 Redis 中查询不到,即没有缓存命中,这时就会直接访问数据库进行查询。当请求量超出数据库最大承载量时,就会导致数据库崩溃。这种情况一般发生在非正常 URL 访问,目的不是为了获取数据,而是进行恶意攻击。 1.2 现象 1、应…

OWASP Top 10 攻击场景实战

OWASP (开放式Web应用程序安全项目) Top 10 榜单是全球公认的、针对Web应用最关键安全风险的权威指南。它不是一份详尽无遗的清单&#xff0c;而是一份凝聚了安全专家共识的“高危预警”。本文将不止于罗列这些风险&#xff0c;而是深入每个风险的核心&#xff0c;通过生动的比…

Three.js 实战:使用 PBR 贴图打造真实地面材质

在 Three.js 中&#xff0c;我们可以通过 MeshStandardMaterial 材质配合多张贴图来实现真实的地面效果。这种方式模拟了物理世界中光照与表面材质的复杂交互&#xff0c;常用于构建高质量场景&#xff0c;如数字孪生、建筑可视化、游戏等。 本文将以一个完整示例为基础&#x…