Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 9, 2013 09:15:55

nikk
От:
Зарегистрирован: 2010-11-09
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Настройки convert в PIL

Доброго времени суток.
Мне нужно преобразовать цветное изображение в чёрно-белое. Использую convert из PIL:

import Image
imageFile = "snim.png"
im1 = Image.open(imageFile)
im1.convert('1').save('end.JPG','JPEG')

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

Заранее спасибо.



Офлайн

#2 Фев. 9, 2013 15:51:10

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Настройки convert в PIL

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")
Не знаю как за один проход это сделать.

Отредактировано reclosedev (Фев. 9, 2013 16:02:27)

Офлайн

#3 Фев. 9, 2013 15:57:49

nikk
От:
Зарегистрирован: 2010-11-09
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Настройки convert в PIL

Спасибо. Только надо

return 0 if x < threshold else 255

иначе получается белый текст на чёрном фоне.



Офлайн

#4 Фев. 9, 2013 16:03:17

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Настройки convert в PIL

nikk
return 0 if x < threshold else 255
иначе получается белый текст на чёрном фоне.
Точно, поправил.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version