Загрузить массив NumPy в виде изображения в градациях серого в корзину S3 - PullRequest
0 голосов
/ 15 ноября 2018

Я сделал некоторые математические операции над изображениями в градациях серого в python, используя numpy.

Теперь я хочу загрузить полученные массивы в виде изображений png в мое хранилище S3.Я пытался загрузить их в формате base64, но таким образом я не могу открыть их как изображения из S3.Мой код выглядит следующим образом:

dec=base64.b64decode(numpy_image)
s3.Bucket('bucketname').put_object(Key='image.png',Body=dec, ContentType='image/png',ACL='public-read')

Когда я пытаюсь открыть файл из S3, он говорит, что файл содержит ошибку

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Работает с использованием библиотеки CV2

data_serial = cv2.imencode('.png', frame)[1].tostring()
s3.Object(bucket_name, key_path).put(Body=data_serial,ContentType='image/PNG')
0 голосов
/ 15 ноября 2018

Так что мне нужно было сначала преобразовать массив NumPy в изображение.Получился следующий код:

from PIL import Image
import io
img = Image.fromarray(numpy_image).convert('RGB')
out_img = BytesIO()
img.save(out_img, format='png')
out_img.seek(0)  
s3.Bucket('my-pocket').put_object(Key='cluster.png',Body=out_img,ContentType='image/png',ACL='public-read')
...