2009-07-03 42 views
1

我有一個圖像。清潔圖像只有黑色

我想要遍歷該圖像,逐像素,任何不是黑色的像素都應該變成白色。我該怎麼做呢?

(Python)。

謝謝!

回答

3

您應該使用point功能,專門爲這個原因存在。

converter= ((0,) + 255*(255,)).__getitem__ 
def black_or_white(img): 
    return img.convert('L').point(converter) 
1

你可能想看看下面的庫:

http://effbot.org/imagingbook/image.htm

特別:

im.getpixel(xy) => value or tuple 

im.putpixel(xy, colour) 
+2

putpixel函數非常慢 – 2009-07-03 17:34:00

+0

有用的信息!我從來沒有使用PIL,我剛剛回想起在Python上運行一段時間。 – Scanningcrew 2009-07-03 18:53:41

6

最有效的方法是使用點功能

def only_black(band): 
    if band > 0: 
     return 255 
    return 0 
result = im.convert('L').point(only_black) 

這就是PIL documentation不得不說一下:

當轉換到一個雙層圖像 (模式「1」),源圖像被轉換成黑白第一 。 大於127的結果值爲 ,然後設置爲白色,圖像爲 抖動。要使用其他閾值,請使用點方法 。

+0

由於only_black函數的band參數將是一個0≤band<256的整數,only_black可能只包含以下代碼行:return band和255 – tzot 2009-07-04 03:05:05