[英]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.