#python #arrays #numpy #image-processing #python-imaging-library
#python #массивы #numpy #обработка изображений #python-imaging-library
Вопрос:
При преобразовании PNG-файлов в массивы numpy я заметил, что преобразование иногда приводило к разным формам массива. В то время как первое изображение имеет трехмерную форму массива (как и большинство изображений), второе имеет два измерения. Оба изображения являются скриншотами и не были изменены. К сожалению, форма массива действительно имеет значение для моего предполагаемого использования.
Я использовал приведенный ниже код для преобразования изображения.
import numpy as np
import PIL.Image
img_path = '' # Put the image path here
img_pil = PIL.Image.open(img_path)
img_array = np.asarray(img_pil)
print(img_array.shape)
Мой вопрос заключается в том, есть ли способ выровнять формы изображений.
Ответ №1:
Если ни одно из ваших изображений не является цветным, вы также можете сэкономить память и работать в оттенках серого, чтобы вы могли убедиться, что с:
im = Image.open(FILENAME).convert('L')
Или вы всегда можете перейти к цвету с помощью:
im = Image.open(FILENAME).convert('RGB')
Ответ №2:
Из того, что я смог увидеть здесь: обработка изображений с помощью numpy, изображения в оттенках серого (как, похоже, в случае со вторым изображением) иногда сохраняются только в двух измерениях, поскольку нет необходимости сохранять три разных цвета для каждого пикселя. Вероятно, это зависит от того, как было создано изображение.
Комментарии:
1. Это кажется логичным. Есть ли прямой способ создания изображений с соответствующими формами?
2. По моему опыту, большинство, если не все изображения, которые вы создаете и сохраняете самостоятельно, будут в формате rgb (3 измерения). Вы можете создать функцию, которая «переводит» их из двухмерных массивов в трехмерные.