Сообщить об ошибке.

Автоматическая регулировка контрастности, Pillow в Python

Функция ImageOps.autocontrast() модуля Pillow в Python

Синтаксис:

from PIL import ImageOps

ImageOps.autocontrast(image, cutoff=0, ignore=None, 
                      mask=None, preserve_tone=False)

Параметры:

  • image - объект изображения для обработки, открытое (PIL.Image.open()) или созданное при помощи PIL.Image.new() или другими способами.
  • cutoff=0 - процент, который нужно отсечь от гистограммы на нижнем и верхнем уровнях. Либо кортеж из (low, high), либо одно число для обоих уровней.
  • ignore=None - значение пикселя фона. Значение None используется для отсутствия фона.
  • mask=None - гистограмма, используемая в операции контраста, вычисляется с использованием пикселей внутри маски. Если маска не указана, то для вычисления гистограммы используется все изображение.
  • preserve_tone=False - сохраняет тон изображения с помощью автоконтраста в стиле "Photoshop".

Возвращаемое значение:

  • объект изображение Image.

Описание:

Функция ImageOps.autocontrast() модуля Pillow нормализует (при необходимости усиливает) контрастность изображения.

Эта функция вычисляет гистограмму входного изображения (или области маски), удаляет из гистограммы процент отсечки самых светлых и самых темных пикселей и переназначает изображение таким образом, что самый темный пиксель становится черным (0), а самый светлый - белым (255).

Пример использования ImageOps.autocontrast():

from PIL import ImageGrab, ImageOps, ImageEnhance
import time

# делаем задержку в 2 секунды на выбор 
# окна, для которого нужно сделать скриншот
time.sleep(2)
# создание скриншота
img_tmp = ImageGrab.grab()
# ослабим контрастность
img_tmp = ImageEnhance.Contrast(img_tmp).enhance(0.5)
# сохраним для сравнения
img_tmp.save('test-original.jpg')    

# применим автоматическую 
# регулировку контрастности
img = ImageOps.autocontrast(img_tmp, preserve_tone=True)
# сохраним для сравнения
img.save('test-autocontrast.jpg')

# теперь усилим контрастность на 2%
img = ImageOps.autocontrast(img_tmp, cutoff=2)
# сохраним для сравнения
img.save('test-contrast-power.jpg')