Измененное/сохраненное значение пикселя не сделает выходное изображение ярче (с использованием импорта PIL с помощью grok Learning python hw)?

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

Каждый раз, когда я подходил близко, я останавливался. Это самое близкое, что я получил, когда я вычисляю значение пикселя входного файла, а затем использую эту информацию, чтобы добавить 50, чтобы изображение стало ярче.

Вот конкретные инструкции;

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

Напишите программу, которая прибавляет 50 к значению каждого пикселя данного изображения.

Ваша программа должна попросить пользователя ввести имя файла изображения для чтения, а затем создать новый выходной файл с именем output.png, который содержит увеличенное изображение.

Вот пример, когда пользователь выбирает данный yawn.png.

Имя файла: зевок.png"

Вот мой текущий код, который вычисляет пиксели изображения перед добавлением значения 50;

`

from PIL import Image
file = input("File name: ")
img = Image.open(file)
width, height = img.size
value = int(width * height + 50)
print(value)

`

Я изменил его на это, потому что я использую пиксель get/put, но ничего не происходит или я получаю ошибки со значением, помещенным в img.putpixel;

`

from PIL import Image
file = input("File name: ")
img = Image.open(file)
width, height = img.size
value = img.getpixel(int(width * height))
img.putpixel(int(width * height), value + 50)
img.save("output.png")

`

Вот пример того, как должно выглядеть выходное изображение; Яркое изображение кота

Но это то, что я продолжаю получать; Неверное изображение той же кошки по умолчанию

Я просто в растерянности. Никто в моем классе тоже еще не зашел так далеко, поэтому они не смогли помочь. Так что, надеюсь, если я выясню это, я смогу помочь кому-то еще. Любые идеи? Заранее спасибо. ​


person Liliminatti    schedule 07.12.2018    source источник


Ответы (1)


В основном вы можете сделать это с помощью лямбда-функции:

from PIL import Image, ImageFilter
im1 = Image.open (input("File name: "))
im2 = im1.point(lambda p: p + 50)
im2.save('output.png')

это самый быстрый и простой метод. Вот страница поддержки лямбда для будущего использования: https://www.w3schools.com/python/python_lambda.asp

person Joel Mac    schedule 22.06.2020