Сглаживание измененного изображения - AttributeError: у объекта 'Image' нет атрибута 'flatten' - PullRequest
0 голосов
/ 13 октября 2019

Я нахожусь во вводном классе нейронных сетей (очень базовые знания по программированию).

Я пытаюсь сгладить изображение, к которому я изменил размер (50,50). Использование img_resized = img.resize((2500,1)) сработало, но мне сказали, что функция изменения размера не идеальна для сглаживания 2D-массива в 1D-массив. Вместо этого я пытаюсь использовать инструмент flatten:

count=0
path1 = "/Users/..."
path2 = "/Users/..."
listing = os.listdir(path1)  
for file in listing:
    type = imghdr.what((path1 + file))
    if type == "jpeg":   
        img = Image.open("/Users/..." +file).convert('LA')
        img_resized = img.resize((50,50))
        img_resized = img_resized.flatten()
        img_filename = file.split(".")[0]
        img_resized.save(path2 + img_filename + '.png')
        count +=1
    pass
pass

Это дало мне сообщение об ошибке AttributeError: 'Image' object has no attribute 'flatten'

Я не уверен, как ввести атрибут flatten?

1 Ответ

0 голосов
/ 13 октября 2019

Вы должны указать, какой модуль вы используете для обработки изображений, но я собираюсь предположить, что это подушка. Ошибка ясна - в классе Image нет функции с именем flatten, и документы подтверждают это.

Не совсем понятно, что вы подразумеваете под сглаживанием, но я предполагаю, что вы имеете в виду взять каждую строку изображения и добавить эту строку к концу предыдущей строки, чтобы каждый пиксель располагался в одной длинной строке. ,Функция Image.resize не должна этого делать, потому что она просто растягивает изображение (представьте, если вы использовали Microsoft Paint для изменения размера изображения). Этого можно добиться с помощью функции Image.getdata ( link ), которая возвращает последовательность, содержащую сглаженные значения пикселей для изображения. Затем вам придется преобразовать эту последовательность обратно в изображение, а затем сохранить его. Не забывайте ссылаться на документы библиотеки, которую вы используете, чтобы получить всю информацию о том, что можно сделать с этой библиотекой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...