我有一个在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的好方法吗?或者还有其他方法吗?我如何处理我的问题?上面的代码有什么问题
我敢说
为什么要使用工具来“编码”某件事,而没有匹配的工具来“解码”
哦,当然有
最好学习这样的工具,你可以安全地使用,无论是编码和;解码阶段。许多可用的Python标准模块,如用于图像转换的 ,甚至是^{
numpy
带有pil/pillow
或cv
,用于SER/DES的dill
或^{多年来一直使用这些工具,使用安全工具朝着正确的方向发展
这永远不会飞
“Sender”,
被提议作为一个
REP
-实例,它决不能以调用.send()
-方法开始。决不能
“Receiver”,
被提议作为一个
REQ
-实例,它决不能以调用.recv()
-方法开始。决不能
听起来很复杂?是的,选择
REQ/REP
不是我的选择ZeroMQ
REQ/REP
形式化可伸缩通信原型是最复杂的通信原型之一(操作内部分布式有限状态自动机(dFSA),实际上是其中的1:N,没有风险,但可以确定这N个dFSA中的任何一个都无法补救地自锁,故事结束了…)别误会我的意思,我从一开始就喜欢ZeroMQ,也很欣赏Pieter HINTJENS&;马丁·萨斯特里克的大量发明;性能提升他们已经融入了ZeroMQ的Zero禅宗,但我试着提醒您,掌握Zero禅宗的开始和结束需要一些时间
上面的链接提供了一个完整的解决方案,使用
PUB/SUB
发送图像,并提供了一些性能调整提示,供进一步思考相关问题 更多 >
编程相关推荐