gpt4 book ai didi

python - 发送图像(作为 numpy 数组) 'requests.post'

转载 作者:行者123 更新时间:2023-12-01 01:30:37 29 4
gpt4 key购买 nike

我对一件非常简单的事情感到有点困惑:我正在使用在线服务进行图像处理并发送我正在使用的图像

var_0 = requests.post(api_url, params=params, headers=headers, data=image_data)

其中 image_data 应编码为二进制字符串。例如,以下示例可以正常运行:

image_data = open(image_path, "rb").read()
var_0 = requests.post(api_url, params=params, headers=headers, data=image_data)

但是,在某些情况下,我需要发送已打开且采用 numpy.array 格式的图像。

我应该如何转换我的图像才能通过请求发送?

最佳答案

在提供的链接中指出“支持的输入图像格式包括JPEG、PNG、GIF(第一帧)、BMP”。因此,您的数据必须采用其中一种格式。 numpy 数组不适合。它需要转换为例如PNG 图像。

使用matplotlib.pyplot.imsave()函数可以最轻松地完成此操作。但是,结果应该保存到内存缓冲区(发送到 API),而不是文件。在 Python 中处理该问题的方法是使用 io.BytesIO() 对象。

综合起来,问题的解决方案是

import io
import numpy as np
import matplotlib.pyplot as plt

buf = io.BytesIO()
plt.imsave(buf, image_np, format='png')
image_data = buf.getvalue()
var_0 = requests.post(api_url, params=params, headers=headers, data=image_data)

其中 image_npnumpy 数组形式的图像。

另请注意,image_data = buf.getvalue() 行不是必需的。相反,缓冲区内容可以直接在 API 调用中使用。

关于python - 发送图像(作为 numpy 数组) 'requests.post',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52908088/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com