2009-07-03 38 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