2013-05-23 2 views
7

Ho bisogno di una funzione che confronta due immagini PIL della stessa dimensione. Chiamiamoli A e B. Il risultato dovrebbe essere una nuova immagine della stessa dimensione. Se un pixel è uguale in entrambi A e B, dovrebbe essere impostato su un colore fisso (ad esempio nero), altrimenti dovrebbe essere impostato sullo stesso colore di B.Confronto di due immagini in pixel con PIL (Python Imaging Library)

Esiste una libreria per l'implementazione di questa funzionalità senza un ciclo costoso su tutti i pixel?

risposta

13

Non sei sicuro di altre librerie, ma si può fare questo con PIL, con qualcosa di simile ...

from PIL import Image, ImageChops 

point_table = ([0] + ([255] * 255)) 

def black_or_b(a, b): 
    diff = ImageChops.difference(a, b) 
    diff = diff.convert('L') 
    diff = diff.point(point_table) 
    new = diff.convert('RGB') 
    new.paste(b, mask=diff) 
    return new 

a = Image.open('a.png') 
b = Image.open('b.png') 
c = black_or_b(a, b) 
c.save('c.png') 
+0

Thanks a lot! Stavo quasi per scrivere quella parte io stesso in C. – Maarten

+0

cosa fa questo? –