2011-12-21 38 views
0

我試圖將圖像轉換爲使用PIL的方法「點」的二進制圖像(二層)如下:轉換灰色財政imageto二層

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那麼它會給出一個全白的圖像!如果我在mappoint中打印i的值,它會顯示0到255之間的值(如果你打印的範圍是256),那麼每個i都不是每個像素的值,是嗎?還有另一種方法只是通過當我們打開圖像轉換,使二層:IMG = Image.open(img_name).convert('1')但默認情況下使用的閾值是127,和醫生說要使用點的方法,如果我們想要另一個門檻

回答

1

功能做工作,你已經生成了0和1的圖像。它看起來黑色的原因是因爲標準的圖像具有強度從0到255

比如你做的1的強度看起來黑色的,因爲從0到255的比例,1是非常接近於0

如果您需要黑白圖像,請將mappoint更改爲if i>1: return 255

+0

如果我做'def mappoint(i):if i> 1:return 255',那麼它會給出一個全白的圖像!如果我在mappoint中打印i的值,它會顯示0到255之間的值(如果你打印的範圍是256),那麼每個i都不是每個像素的值,是嗎?還有另外一種方法可以在我們打開圖像時通過使用convert來創建bilevel:'img = Image.open(img_name).convert('1')'但默認情況下使用的閾值是127,並且文檔說要使用如果我們想要另一個門檻,可以使用點法 – shn 2011-12-21 00:35:45

+0

那麼,你想要什麼樣的門檻?你**是否嘗試**默認閾值?你對這個結果感到不滿意嗎? – 2011-12-21 00:56:31

+0

如果你看看你的'mappoint'定義......你已經把閾值設置爲1.所以只有黑色像素(和非常接近黑色的像素)將保持黑色,其餘的將保持白色。機會是你正在測試這個圖像沒有足夠的黑色像素,你會注意到.....嘗試將閾值改爲127以查看我的意思。 – 2011-12-21 01:11:20