Преобразование массива 2D Numpy значений оттенков серого в изображение PIL

Скажем, у меня есть массив 2D Numpy значений в диапазоне от 0 до 1, который представляет изображение в градациях серого. Как преобразовать его в объект изображения PIL? Все попытки до сих пор дали чрезвычайно странные рассеянные пиксели или черные изображения.

for x in range(image.shape[0]): for y in range(image.shape[1]): image[y][x] = numpy.uint8(255 * (image[x][y] - min) / (max - min)) #Create a PIL image. img = Image.fromarray(image, 'L') 

В приведенном выше коде образ массива numpy нормализуется (изображение [x] [y] – min) / (max – min), поэтому каждое значение находится в диапазоне от 0 до 1. Затем оно умножается на 255 и преобразуется в 8-битное целое число. Теоретически это должно происходить с помощью Image.fromarray с режимом L в полутоновое изображение, но результатом является набор белых белых пикселей.

One Solution collect form web for “Преобразование массива 2D Numpy значений оттенков серого в изображение PIL”

Если я понял вас, вы хотите получить изображение в оттенках серого с помощью PIL.

Если это так, вам не нужно умножать каждый пиксел на 255.

Следующие работали для меня

 import numpy as np from PIL import Image # Creates a random image 100*100 pixels mat = np.random.random((100,100)) # Creates PIL image img = Image.fromarray(mat, 'L') img.show() 
Python - лучший язык программирования в мире.