yolov8报警图片写入minio服务器 Rabbitmq发送地址

OSError [WinError 1455]页面文件太小,无法完成操作”解决方案“_深度学习_yangshejun-GitCode 开源社区 (csdn.net)

python对RabbitMQ的简单使用_python rabbitmq-CSDN博客

【Windows安装RabbitMQ详细教程】_rabbitmq windows-CSDN博客

Windows 10安装Minio 文件服务器-CSDN博客

发送到minio服务器

import collections
import os
import time
import cv2
import numpy as np
from ultralytics import YOLO
from threading import Thread, Lock
import minio
minio_client = minio.Minio('10.160.86.76:9000',access_key='minioadmin',secret_key='minioadmin',secure=False)
shared_model_1 = YOLO("yolov8n.pt")
model_results = {shared_model_1: []}
lock = Lock()
os.makedirs('stream1/images', exist_ok=True)
os.makedirs('stream1/videos', exist_ok=True)
frame_rate = 30
record_length = 10  # seconds
target_class_value1 = 0  # e.g. class 1
results_list1 = collections.deque(maxlen=frame_rate * record_length)
def predict(model, image_path):results = model.predict(image_path, show=True, stream=True)last_save_time1 = time.time()with lock:model_results[model] = resultsfor result in model_results[model]:print('model_results[model]', model_results[model])if model == shared_model_1:boxes = result.boxesresults_list1.append(result)output_dir = 'stream1'if boxes.cls.numel() != 0:cls_tensor = boxes.clscls_list = cls_tensor.cpu().numpy().tolist()else:cls_list = [99999]if target_class_value1 in cls_list and (time.time() - last_save_time1) > record_length:timestamp = int(time.time())img_filepath = f"{output_dir}/images/{timestamp}.jpg"cv2.imwrite(img_filepath, result.plot(boxes=True))with open(img_filepath, 'rb') as file_data:file_stat = os.stat(img_filepath)minio_client.put_object('iot-db-img', f'{timestamp}.jpg', file_data,file_stat.st_size)last_save_time1 = time.time()Thread(target=predict, args=(shared_model_1, "0")).start()  # " "填写地址
import boto3
import pika
import time# 初始化Minio客户端
s3 = boto3.client('s3',endpoint_url='http://10.160.86.76:9000', # 这需要替换成你的Minio服务器地址aws_access_key_id='minioadmin',  # 这需要替换成你的access keyaws_secret_access_key='minioadmin')  # 这需要替换成你的secret key# 初始化RabbitMQ连接和通道
connection = pika.BlockingConnection(pika.URLParameters('amqp://guest:guest@localhost:5672/%2F')) # 这需要替换成你的RabbitMQ服务器信息
channel = connection.channel()# 声明队列
channel.queue_declare(queue='image_urls')# 获取bucket中的初始对象列表
response = s3.list_objects(Bucket='iot-db-img') # 你需要把bucket's name替换为你自己的
old_keys = {content['Key'] for content in response.get('Contents', [])}while True:# 循环获取新的对象列表response = s3.list_objects(Bucket='iot-db-img')new_keys = {content['Key'] for content in response.get('Contents', [])}# 找出新添加的图片added_keys = new_keys - old_keysfor key in added_keys:image_url = f"http://10.160.86.76:9000/iot-db-img/{key}" # 这需要替换成你的Minio服务器和bucket信息# 发送新图片的URL到RabbitMQchannel.basic_publish(exchange='',routing_key='image_urls',body=image_url)# 更新旧的图片列表old_keys = new_keys# 每次循环后休息一段时间以免对服务器造成过大压力time.sleep(1)# 关闭RabbitMQ连接
connection.close()

接收端测试

import os
import pika
import requests# establishes a connection with RabbitMQ
connection = pika.BlockingConnection(pika.URLParameters('amqp://guest:guest@localhost:5672/%2F'))
channel = connection.channel()# declare queue
channel.queue_declare(queue='image_urls')def callback(ch, method, properties, body):image_url = body.decode()image_name = os.path.basename(image_url)response = requests.get(image_url)# Check if the response is okif response.status_code == 200:# save the image to the localwith open(os.path.join(r'E:\ultralytics-main\rabbit\rabbit', image_name), 'wb') as f:f.write(response.content)print(f"Image saved: {image_name}")else:print(f"Unable to download image, response code: {response.status_code}, url: {image_url}")ch.basic_ack(delivery_tag=method.delivery_tag)# start the message consumer
channel.basic_consume(queue='image_urls', on_message_callback=callback)print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

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

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

相关文章

CentOS Stream 9 vsftpd本地用户设置

1、使用yum指令下载vsftpd yum install vsftpd2、创建wu用户,为ftp组的成员 useradd -g ftp wu3、设置一个密码 echo 1 |passwd --stdin wu4、修改本地用户目录的权限(所有者为wu用户) chown -R wu /data/wu5、创建本地用户的信息数据存放…

mysql 函数 GROUP_CONCAT 踩坑记录,日志:Row 244 was cut by GROUP_CONCAT()

mysql 函数 GROUP_CONCAT 踩坑记录,报错:Row 244 was cut by GROUP_CONCAT 结论:个人建议还是放在内存中拼接吧~db日志信息:Row 244 was cut by GROUP_CONCAT())根本原因:拼接的字符串长度超过 group_concat_max_len […

uni-app实现页面之间的跳转传参(八)

界面之间的参数传递在 开发中经常会用到,这节主要将一下uni-app开发应用是的传参情况。如下图所示,我的一级界面将点检分成三类:日点检、周点检和年保养;在点击相应的会导航到相应的功能。 在uni-app中常用的方法有uni.navigateTo(OBJECT)、uni.redirectTo(OBJECT);简单的…

实时通信的方式——WebRTC

文章目录 基于WebRTC实现音视频通话P2P通信原理如何发现对方? 不同的音视频编解码能力如何沟通?(媒体协商SDP)如何联系上对方?(网络协商) 常用的API音视频采集getUserMedia核心对象RTCPeerConne…

Web开发学习总结

学习路线 Web 全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站 初识Web前端 Web标准也称为网页标准,由一系列的标准组成,大部分由W3C(World Wide Web Consortium,万维网联盟)负责制定。三个组…

用例篇

弱网测试 弱网测试的目的是尽可能保证用户体验,关注的关键点包括: 页面响应时间是否可以接受,关注包括哦热启动、冷启动时间、页面切换、前后台切换、首字时间,首屏时间等。页面呈现是否完成一致。超时文案是否符合定义&#xf…

CSS浮动(CSS从入门到精通学习第四天)

css第04天 一、其他样式 1、圆角边框 在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。 border-radius 属性用于设置元素的外边框圆角。 语法: border-radius:length; 参数值可以为数值或百分比的形式如果是正方形&…

K8S认证|CKA题库+答案| 15. 备份还原Etcd

目录 15、 备份还原Etcd CKA v1.29.0模拟系统 下载试用 题目: 开始操作: 1)、切换集群 2)、登录master并提权 3)、备份Etcd现有数据 4)、验证备份数据快照 5)、查看节点和Pod状态 6&#xff0…

linux下的openssh简介(centos 8)

目录 1. 简介2. 安装 OpenSSH3. 配置 OpenSSH 服务器3.1 服务器配置文件配置文件的详解 3.2 安全操作——修改 SSH 端口3.3 安全操作——禁止 root 登录3.4 安全操作——密钥认证3.5 安全操作——禁止密码认证 4. 配置 OpenSSH 客户端4.0 常用命令4.0.1 ssh常用命令4.0.2 scp常…

Java进阶学习笔记11——多态

什么是多态? 多态是在继承/实现情况下一种现象,表现为:对象多态和行为多态。 同一个对象,在不同时刻表现出来的不同形态。 多态的前提: 要有继承/实现关系 要有方法的重写 要有父类引用指向子类对象。 多态的具体代码…

使用 LangFuse 意外被挂马!我是怎么恢复系统稳定的?

在使用 LangFuse 过程中,被意外挂马!通过一番折腾服务恢复正常~ 本文将详细介绍应对恶意脚本和进程的完整方案,包括识别、清理、恢复和预防步骤。 阿里云扫到的信息 被执行的 Base64 SUlaQnRTCmV4ZWMgJj4vZGV2L251bGwKSUhDa0hQbmQ9Li8uJChkYXRlfG1kNXN1bXxoZWFkIC1jMjApCl…

Value-Based Reinforcement Learning(1)

Action-Value Functions Discounted Return(未来的reward,由于未来存在不确定性,所以未来的reward 要乘以进行打折) 这里的依赖actions ,和states 这里 Policy Function : ,表达了action的随机性 S…

创新实训2024.05.26日志:服务端接口实现——用户开启多个会话

1. 概念图 类似于Kimi,文心一言,chatGPT等市面上主流的大模型,我们的大模型也支持同一个用户的多个会话,并且提供支持联系上下文给出解答的能力。 2. 基于会话的对话 在langchain chatchat这个对langchain框架进行二次封装的第三…

vulnhub靶场之FunBox-8

一.环境搭建 1.靶场描述 Its a box for beginners and can be pwned in the lunch break. This works better with VirtualBox rather than VMware 2.靶场下载 Funbox: Lunchbreaker ~ VulnHub 3.靶场启动 二.信息收集 1.寻找靶场真实IP地址 nmap -sP 192.168.2.0/24 arp-…

html中被忽略的简单标签

1&#xff1a; alt的作用是在图片不能显示时的提示信息 <img src"https://img.xunfei.cn/mall/dev/ifly-mall-vip- service/business/vip/common/202404071019208761.jp" alt"提示信息" width"100px" height"100px" /> 2&#…

嵌入式进阶——震动马达

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 原理图控制分析功能设计 原理图 控制分析 S8050 NPN三极管特性 NPN型三极管的工作原理是基于PN结和PNP型晶体管的工作原理。 当外…

【qt】QTreeWidget 树形组件

QTreeWidget 树形组件 一.什么是树形组件二.界面设计树形组件三.代码实现1.清空2.设置列数3.设置头标签4.添加根目录①QTreeWidgetitem②设置文本③设置图标④添加为顶层目录 5.添加子目录①初始化为父目录②子目录添加到父目录③获取到子目录 四.插入目录1.获取当前选中目录项…

部署PIM-SM

拓扑图 配置 使能组播路由 配置OSPF 组播路由器接口配置pim-sm 连接组成员的接口使能igmp pim路由器上配置静态RP sysname AR1 # multicast routing-enable # interface GigabitEthernet0/0/0ip address 10.1.12.1 255.255.255.0 pim sm # interface GigabitEthernet0/0/…

flutter项目运行报错Exception: Gradle task assembleDebug failed with exit code 1各种报错合集

1.报错 Launching lib/main.dart on sdk gphone64 arm64 in debug mode... Running Gradle task assembleDebug... Exception in thread "main" java.net.ConnectException: Operation timed out at java.base/sun.nio.ch.Net.connect0(Native Method) at j…