我目前正在尝试构建一个系统,将图像发送到多个远程服务器,以便对图片进行一些 Open_CV 和 tesseract 操作。
在一台服务器上没关系,因为我在发送之前将图像重命名到文件夹中(发送的第一张图像自动命名为 Image_0)
然后在接收时再次重命名它们,顺序相同,以便名称与同一张图像相对应(首先发送的 Image_0 和首先接收的本地和远程的名称均为 Image_0),以便在接收结果时更容易读取名称。
然后,在特征结束时,我在本地收到一个 .txt 文件,其中包含图像(MRZ 区域)的结果,例如“Image_0 结果 XXXXXXX<<<
我的问题 --->
我现在想使用多个远程服务器并将 WORKQUEUE 与rabbitMQ 结合使用,以便进行基本的工作流程编排并减少图像样本的处理时间。
如何发送包含该图像的 base64 图像名称,以便在 .txt 结果文件末尾具有相应的名称,因为我当前的方法无法与多个远程服务器一起使用?
感谢您的帮助!
这是我目前发送图像的方式:
for file in natsorted(os.listdir()):
end_name=file[-4]+ file[-3]+ file[-2]+ file[-1]
if (end_name != ".txt"):
try:
with open(file, "rb") as image:
message = base64.b64encode(image.read())
channel.basic_publish(exchange='topic_logs',
routing_key=routing_key, body=message)
print(f"{file} || sended on topic %r \n" % (routing_key))
except IndexError:
print("No image given ! ")
sys.exit(1)
os.rename(file,"Image_"+str(ComptNames)+".png")
ComptNames=ComptNames+1
使用 JSON 作为消息内容类型。该 JSON 对象的一个元素是文件名,另一个元素是 Base64 编码的图像。
{
"filename": "foo.jpg",
"bytes": "..."
}
消费者必须解析此 JSON 消息正文。