Ich erstelle ein großes numpy Array mit [n_images, width, height, 3]. Um dies zu tun, erstelle ich eine leere Liste und füge numpy Arrays hinzu, die aus dem Beschneiden von RGB-Bildern erstellt wurden, und wandeln sie in numplige Arrays um.Was passiert, wenn PIL-Objekte in numpy umgewandelt werden?
stieß ich auf etwas wirklich seltsam versucht, meinen Code zu optimieren:
import time
from PIL import Image
im1=Image.open("random_png_image.png")
im2=Image.open("random_png_image.png").convert('RGB')
t1=time.time()
a1=np.asarray(im1)
t2=time.time()
a2=np.asarray(im2)
t3=time.time()
print("Converting to numpy without converting to RGB mode first took: %0,3f ms"%((t2-t1)*1000.0))
print("Converting to numpy after the image was converted to RGB first took: %0,3f ms"%((t3-t2)*1000.0))
Und ich bekomme einen huuuge Unterschied:
- um 80 ms für den ersten op
- um 8 ms für die zweite
Warum ist das? Führt PIL implizit dieses convert_to_rgb aus, wenn es in ein numpy Array konvertiert wird? Beide PIL-Objekte haben, wenn sie überprüft werden, den RGB-Modus, also ist es seltsam. Gibt es eine Möglichkeit, den Prozess zu beschleunigen? Was muss ich tun, um diesen Prozess zu optimieren? PIL nicht benutzen? Konvertiere sie danach in ein Array?
Vielleicht möchten Sie in scikit-Bild – MaxNoe
haben Vielen Dank! Wird besorgt ! – jean