Ich habe zwei Graustufen PNGs. Diese Bilder haben die gleiche Breite und Höhe.Wie zu beschleunigen Python PIL Bild Filterfunktion
Zum Beispiel:
Ich brauche diese Bilder in der folgenden Art und Weise zu filtern: wenn ein Pixel aus image1 einen anderen Wert als 255 hat, und das Pixel in der gleichen Position einen Wert hat, Anders als 255 möchte ich beide Pixel in zwei separaten Bildern speichern (imageFiltered1 und imageFiltered2). Dann erzeugen beide gefilterten Bilder ein neues Bild, dank der Multiplikation mit ImageChops.
Dies ist der Algorithmus, den ich zusammen gezogen:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PIL import Image, ImageChops
def makeCustomMultiply(image1, image2):
assert image1.size == image2.size
imageFiltered1 = Image.new(size=image1.size, mode='L', color=255)
imageFiltered2 = Image.new(size=image1.size, mode='L', color=255)
for eachY in xrange(0, imageFiltered1.size[1]):
for eachX in xrange(0, imageFiltered1.size[0]):
pixel1 = image1.getpixel((eachX, eachY))
pixel2 = image2.getpixel((eachX, eachY))
if pixel1 == 255 or pixel2 == 255:
imageFiltered1.putpixel((eachX, eachY), 255)
imageFiltered2.putpixel((eachX, eachY), 255)
else:
imageFiltered1.putpixel((eachX, eachY), pixel1)
imageFiltered2.putpixel((eachX, eachY), pixel2)
combo = ImageChops.multiply(imageFiltered1, imageFiltered2)
return combo
if __name__ == '__main__':
image1 = Image.open('image1.png')
image2 = Image.open('image2.png')
myCustomMultiply = makeCustomMultiply(image1, image2)
myCustomMultiply.save('myCustomMultiply.png')
Es ist im Grunde eine Multiplikationsfunktion, wo schwarz/grau gegen Weiß nicht gezeigt
. Nur Grau zu Grau wird dann multipliziert.Kann mein Code irgendwie verbessert werden? Ich möchte die verschachtelten For-Schleifen vermeiden, die meinen Code ziemlich verlangsamen. Diese Funktion muss jedes Mal, wenn ich mein Programm starte, hunderte Male benutzt werden.
Dank
ouput:
dies ist die Ausgabe meiner Funktion zu verwenden: –
möchten Sie vielleicht [Code Review] (https://codereview.stackexchange.com/) überprüfen – Tbaki