Python - 删除(转换为白色)图像的非黑色像素

时间:2013-08-16 21:06:48

标签: python png ocr

我有一个png文件,我想删除所有非黑色像素(将非黑色像素转换为白色)。 我怎么能在Python中轻松做到这一点?谢谢!

2 个答案:

答案 0 :(得分:2)

以下是使用PIL进行此操作的一种方法:

from PIL import Image

# Separate RGB arrays
im = Image.open(file(filename, 'rb'))
R, G, B = im.convert('RGB').split()
r = R.load()
g = G.load()
b = B.load()
w, h = im.size

# Convert non-black pixels to white
for i in range(w):
    for j in range(h):
        if(r[i, j] != 0 or g[i, j] != 0 or b[i, j] != 0):
            r[i, j] = 255 # Just change R channel

# Merge just the R channel as all channels
im = Image.merge('RGB', (R, R, R))
im.save("black_and_white.png")

答案 1 :(得分:2)

我使用自制啤酒在我的Mac上做了这个,我不知道你使用哪种操作系统,所以我不能给你更具体的说明,但如果你没有这些,你需要采取的一般步骤已:

1)安装libjpeg(如果你要处理一个.jpeg文件,pil不会附带这个)

2)如果您使用的是mac,请安装pil(http://www.pythonware.com/products/pil/或通过自制软件或macports等)

3)如果需要,链接pil与python

4)使用此代码:

from PIL import Image

img = Image.open("/pathToImage") # get image
pixels = img.load() # create the pixel map

for i in range(img.size[0]): # for every pixel:
    for j in range(img.size[1]):
        if pixels[i,j] != (0,0,0): # if not black:
            pixels[i,j] = (255, 255, 255) # change to white

img.show()

如果你卡在某个地方,请随意发表评论。