Найти - Пользователи
Полная версия: Настройки convert в PIL
Начало » Python для новичков » Настройки convert в PIL
1
nikk
Доброго времени суток.
Мне нужно преобразовать цветное изображение в чёрно-белое. Использую convert из PIL:
import Image
imageFile = "snim.png"
im1 = Image.open(imageFile)
im1.convert('1').save('end.JPG','JPEG')

Вот только не устраивает меня результат, слишком низкий порог, много чёрного шума получается. Можно как-то передать в convert значение порога?

Заранее спасибо.
reclosedev
When converting to a bilevel image (mode “1”), the source image is first converted to black and white. Resulting values larger than 127 are then set to white, and the image is dithered. To use other thresholds, use the point method.

from PIL import Image
img = Image.open("image1.png")
 
def bw_filter(threshold=127):
    def table_gen(x):
        return 0 if x < threshold else 255
    return table_gen
 
new = img.convert("L").point(bw_filter(200))
new.show()

upd:
На выходе будет RGB картинка, если нужна black and white, например для уменьшения размера файла, то нужно конвертировать с mode=“1”
new = img.convert("L").point(bw_filter(200)).convert("1")
Не знаю как за один проход это сделать.
nikk
Спасибо. Только надо
return 0 if x < threshold else 255

иначе получается белый текст на чёрном фоне.
reclosedev
nikk
return 0 if x < threshold else 255
иначе получается белый текст на чёрном фоне.
Точно, поправил.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB