如何使用ZeroMQ通过TCP套接字发送PNG图像?

已完成

我有一个在Python上运行的Keras模型,我想从Unity 3D摄像机向该模型发送帧。我可以通过使用外部库轻松地在它们之间传输字符串。该外部库将字节数组发送给Python。因此,我将Unity的相机帧转换为字节数组。但是,我不知道如何在Python上读取发送的图像(字节数组)。

为了解决此问题,我仅使用Python尝试了一些发件人-收件人代码。但是,这些无效。

以下是代码:

发件人:

import zmq
import base64


context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")

f = open("sample.png", 'rb')
bytes = bytearray(f.read())
strng = base64.b64encode(bytes)
socket.send(strng)
f.close()

接收方:

import zmq
import base64


context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")

import base64
message = socket.recv()
f = open("sample.png", 'wb')
ba = bytearray(base64.b64decode(message))
f.write(ba)
f.close()

这是将帧从Unity发送到Python的好方法吗?还是有其他方法?我该如何处理我的问题?上面的代码有什么问题?

用户名

“这是将帧从Unity发送到Python的好方法吗?”

我敢说。

但是,我不知道如何在Python上读取发送的图像(字节数组)。

为什么有人会使用一种工具“编码”某些东西,
而没有匹配的工具“解码”呢?


“或者还有其他方法吗?”

哦,肯定有。


“我该如何处理我的问题?”

最好学习在编码和解码阶段都可以安全使用的工具。大量此类可用的Python标准模块-numpy用于pil/pillowcv用于图像转换,dillpickle用于SER / DES甚至是struct

在此处输入图片说明

Having used these for ages with ZeroMQ, you may be sure to go in the right direction using safe tools.


Q : "What is wrong with the codes above?"

This will never fly.

The "Sender",
having been proposed as a REP-instance can never start with a call to the .send()-method.
Never.

The "Receiver",
having been proposed as a REQ-instance can never start with a call to the .recv()-method.
Never.

Sounds complicated? Yes, the choice of REQ/REP was not mine.

ZeroMQREQ/REP正式的可扩展通信原型是最复杂的模型之一(操作内部分布式有限状态自动机(dFSA),实际上是1:N,没有风险,但可以肯定地确定任何人都无法自我解锁这些N dFSA的故事结束了...)

不要误会我的意思,我一直以来都非常喜欢ZeroMQ,并且佩服Pieter HINTJENS和Martin SUSTRIK的大量发明和性能提升,他们已经融入ZeroMQ的Zen of Zero(零之禅),但是我尝试警告您花些时间来掌握禅开始。

上面的链接提供了一个完整的解决方案,即使用PUB/SUBfor进行图像发送,以及一些性能调整提示以供进一步考虑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过套接字发送图像

来自分类Dev

如何通过TCP套接字发送列表-Python

来自分类Dev

如何使用cppzmq从ROUTER套接字向特定的DEALER套接字发送ZeroMQ消息?

来自分类Dev

ZeroMQ pyzmq通过TCP发送jpeg图像

来自分类Dev

通过网络通过套接字发送图像

来自分类Dev

通过TCP套接字发送多个文件

来自分类Dev

如何使用TCP / IP套接字发送特殊字符?

来自分类Dev

通过套接字发送和接收图像

来自分类Dev

通过套接字发送压缩的JPG图像

来自分类Dev

如何使用ZeroMQ实现多个套接字?

来自分类Dev

如何在C中通过TCP套接字通过HTTP发送文件?

来自分类Dev

如何在C中通过TCP套接字通过HTTP发送文件?

来自分类Dev

如何使用ZeroMQ将字节数组发送到套接字?

来自分类Dev

如何通过套接字发送PDF文件?

来自分类Dev

如何通过套接字发送HTTPS请求?

来自分类Dev

使用套接字通过HTTP发送结构

来自分类Dev

使用ObjectInputStream通过套接字发送数组

来自分类Dev

我如何使用 Ip 标志和 Tcp 控制标志发送 TCP 原始套接字

来自分类Dev

使用gen_tcp:send / 2通过套接字发送消息

来自分类Dev

使用C中的套接字通过TCP发送音频文件

来自分类Dev

使用 VB.NET 中的套接字通过 TCP 发送字节数组

来自分类Dev

通过C中的TCP套接字发送结构

来自分类Dev

通过Python中的TCP套接字发送文件

来自分类Dev

LUA通过TCP套接字发送十六进制变量

来自分类Dev

Java通过TCP套接字从队列或堆栈发送对象

来自分类Dev

可以通过TCP套接字发送的最大字符大小

来自分类Dev

使用 C# 通过套接字发送和接收图像 | 使用 C# 共享屏幕

来自分类Dev

通过套接字发送base64编码图像

来自分类Dev

通过套接字发送图像时的Java OutOfMemory

Related 相关文章

热门标签

归档