Указано по предоставленной ссылке «Поддерживаемые форматы входного изображения включают 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_np
- это изображение в виде numpy
массив.
Обратите также внимание, что строка image_data = buf.getvalue()
не обязательна.Вместо этого содержимое буфера может использоваться непосредственно в вызове API.