[英]Send and receive images through kafka in json using python
我正在将 Kafka 管道用于计算机视觉项目。 我必须将 JSON 个对象摄取到管道中并在消费者端接收它们。 我这样做是这样的:
>>> a = some_image_numpy_array
>>> b = base64.b64encode(a)
>>> c = b.decode('utf-8')
如何在消费者端再次解码为 NumPy 数组格式? 我无法将图像以字节形式转储到 JSON 中。 我必须使用 utf 解码或 str() 将其转换为字符串。
注意:我不能只进行 base64 编码并将其转储到 json,因为字节不是 json 可序列化的。
你可以使用这个base64.b64decode
>>> a = some_image_numpy_array
>>> b = base64.b64encode(a)
>>> c = base64.b64decode(b)
%python
import base64
encoded = base64.b64encode(b'a0JD0000006SxKJMA0')
print(base64.b64decode(encoded))
会给你解码字符串
b'a0JD0000006SxKJMA0'
你可以这样做:
# convert image to string
image_to_kafka = base64.b64encode(cv2.imencode('.jpg', img)[1]).decode()
# put string image into dictionary
some_dict = {
'some_id': 123,
'image': image_to_kafka
}
# send using your producer
producer.send('some_topic', value=some_dict)
在我的案例中,生产者的创建方式如下:
producer = KafkaProducer(bootstrap_servers=[kafka_server],
value_serializer=lambda x:json.dumps(x).encode('utf-8'))
但是你必须考虑到:
恕我直言,更好的选择是使用一些存储空间来保存图像并仅发送图像的 ID 和/或路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.