Попытка сгенерировать случайное изображение с PIL, но получить странный результат - PullRequest
1 голос
/ 09 марта 2020

Generated Pictured

Я использовал этот код для генерации случайного изображения, заполнив каждый пиксель, но почему я получил этот странный вывод (рисунок по ссылке выше)? На рисунке параллельные красные, зеленые, синие вертикальные линии.

#<Python 3.8>
from PIL import Image
import numpy as np
data=np.random.randint(low=0,high=256,size=128*128*3)
data=data.reshape(128,128,3)
Image.fromarray(data,'RGB')

1 Ответ

2 голосов
/ 09 марта 2020

В режиме PIL RGB ожидаются 8-битные цветовые каналы, но ваш массив, скорее всего, имеет dtype int32. 75% каждого из ваших целых чисел состоят из неиспользуемых 0 битов, поэтому 75% вашего изображения - черные полосы.

Попробуйте установить dtype ваших данных на unit8 при вызове randint.

from PIL import Image
import numpy as np
data=np.random.randint(low=0,high=256,size=128*128*3, dtype=np.uint8)
data=data.reshape(128,128,3)
Image.fromarray(data,'RGB').save("output.png")

Результат (одна возможность из многих):

enter image description here

...