2013-05-23 1 views
7

Ich brauche eine Funktion, die zwei PIL-Bilder derselben Größe vergleicht. Nennen wir sie A und B. Das Ergebnis soll ein neues Bild gleicher Größe sein. Wenn ein Pixel in A und B gleich ist, sollte er auf eine feste Farbe (z. B. Schwarz) eingestellt sein, ansonsten auf die gleiche Farbe wie B.Zwei Bilder pixelweise mit PIL vergleichen (Python Imaging Library)

Gibt es eine Bibliothek zur Implementierung dieser Funktionalität? ohne eine teure Schleife über alle Pixel?

Antwort

13

nicht über andere Bibliotheken sicher, aber Sie können dies mit PIL zu tun, mit so etwas wie ...

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

Vielen Dank! Ich würde diesen Teil in C fast selbst schreiben. – Maarten

+0

was macht das? –