Как я могу преобразовать каждый пиксель, который не черный, в определенный цвет? - PullRequest
1 голос
/ 02 июля 2011

Я хочу, чтобы каждый пиксель, который не является черным, был установлен на белый (или любой другой цвет).

Мне это нужно в Python (желательно с использованием PIL, но можно рассмотреть и другие библиотеки)

Спасибо

Ответы [ 3 ]

3 голосов
/ 02 июля 2011

Попробуйте использовать Image.blend().Предположим, ваше изображение im.

# conversion matrix: any color to white, black to black
mtx = (1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0)
mask = im.convert("L", mtx) # show() it to get the idea
decal = Image.new("RGB", im.size, (0, 0, 255)) # we fill with blue
Image.blend(im, decal, mask).show() # all black turned blue

Это должно быть намного быстрее, чем лямбда-вызовы на пиксель, особенно на больших изображениях.

3 голосов
/ 02 июля 2011

Попробуйте это:

import sys

from PIL import Image

imin = Image.open(sys.argv[1])
imout = Image.new("RGB", imin.size)

imout.putdata(map(
                  lambda pixel: (0,0,0) if pixel == (0,0,0) else (255,255,255),
                  imin.getdata()
                 )
             ) 

imout.save(sys.argv[2])
1 голос
/ 02 июля 2011

с использованием PIL

c   = color_of_choice
out = im.point(lambda i: c if i>0 else i)
...