4

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

4

2 回答 2

4

这是使用 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")
于 2013-08-16T22:29:32.420 回答
2

我使用自制软件在我的 Mac 上完成了此操作,但我不知道您使用的是哪个操作系统,所以我无法为您提供更具体的说明,但如果您还没有完成这些步骤,则需要采取以下一般步骤:

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

2) 安装 pil ( http://www.pythonware.com/products/pil/或者通过 homebrew 或 macports 等,如果你使用的是 mac)

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()

如果您卡在某个地方,请随时提出评论。

于 2013-08-16T22:29:40.400 回答