Преобразовать изображение серой чешуи в двухуровневый - PullRequest
0 голосов
/ 21 декабря 2011

Я пытаюсь преобразовать изображение в двоичное изображение (двухуровневый), используя метод «точка» PIL следующим образом:

def mappoint (i):
   if i > 1: return 1
   else: return 0

if __name__=="__main__":
   img = Image.open('no.tif')
   img = img.point(mappoint)
   img.save('ok.tif')

но это дает мне черное изображение!

РЕДАКТИРОВАТЬ: Если я делаю def mappoint (i): if i > 1: return 255, то это дает полностью белое изображение! и если я печатаю значение i в mappoint, оно показывает значения от 0 до 255 (как если бы вы делали диапазон печати (256)), так что каждый i не является значением каждого пикселя, не так ли? Есть еще один способ сделать двухуровневый уровень, просто используя convert, когда мы открываем изображение: img = Image.open(img_name).convert('1'), но по умолчанию используется пороговое значение 127, и в документе говорится, что нужно использовать метод точек, если нам нужен другой порог

1 Ответ

1 голос
/ 21 декабря 2011

Функция сработала, вы сгенерировали изображение с 0 и 1.Причина, по которой он выглядит черным, заключается в том, что стандартные изображения имеют интенсивность от 0 до 255.

Интенсивность 1, как вы сделали, выглядит черной, потому что по шкале от 0 до 255 1 очень близко к 0.

Измените mappoint на if i>1: return 255, если вы хотите черно-белое изображение.

...