Как преобразовать изображение PIL в массив numpy? - PullRequest
0 голосов
/ 10 февраля 2020

Когда я делаю np.asarray (my_img) или массив (my_img) .shape, он возвращает (2412L, 3600L, 3L) для изображения jpg, но я просто хочу массив 2D (2412L, 3600L), так как конвертировать это правильно? Заранее спасибо.

my_image = "AI.jpg"

from matplotlib.pyplot import imread
from PIL import Image

fname = "images/" + my_image
image = Image.open(fname) 
print(image.size)    # output: (3600, 2412)
print(np.asarray(image).shape) # output: (2412L, 3600L, 3L)
print(np.array(image).shape) # output: (2412L, 3600L, 3L)

1 Ответ

0 голосов
/ 10 февраля 2020

Если размеры вашего изображения имеют 3 для конечной оси, это обычно означает, что у вас есть 3-канальное изображение RGB.

Если вы хотите одноканальное изображение, вы потеряете цвет RGB и просто изображение в градациях серого. Вы можете сделать это так:

grey = Image.open(fname).convert('L')
...