Python Pillow - ML mit Numpy
In diesem Kapitel verwenden wir numpy, um Bilddaten mithilfe der Python-Imaging-Bibliothek „Pillow“ zu speichern und zu bearbeiten.
Bevor Sie mit diesem Kapitel fortfahren, öffnen Sie die Eingabeaufforderung im Administratormodus und führen Sie den folgenden Befehl aus, um numpy zu installieren -
pip install numpy
Note - Dies funktioniert nur, wenn Sie PIP installiert und aktualisiert haben.
Erstellen eines Bildes aus einem Numpy Array
Erstellen Sie ein RGB-Bild mit PIL und speichern Sie es als JPG-Datei. Im folgenden Beispiel werden wir -
Erstellen Sie ein Array mit einer Größe von 150 x 250 Pixel.
Füllen Sie die linke Hälfte des Arrays mit Orange.
Füllen Sie die rechte Hälfte des Arrays mit Blau.
from PIL import Image
import numpy as np
arr = np.zeros([150, 250, 3], dtype=np.uint8)
arr[:,:100] = [255, 128, 0]
arr[:,100:] = [0, 0, 255]
img = Image.fromarray(arr)
img.show()
img.save("RGB_image.jpg")
Ausgabe
Graustufenbilder erstellen
Das Erstellen von Graustufenbildern unterscheidet sich geringfügig vom Erstellen eines RGB-Bildes. Wir können das zweidimensionale Array verwenden, um ein Graustufenbild zu erstellen.
from PIL import Image
import numpy as np
arr = np.zeros([150,300], dtype=np.uint8)
#Set grey value to black or white depending on x position
for x in range(300):
for y in range(150):
if (x % 16) // 8 == (y % 16)//8:
arr[y, x] = 0
else:
arr[y, x] = 255
img = Image.fromarray(arr)
img.show()
img.save('greyscale.jpg')
Ausgabe
Erstellen eines Numpy-Arrays aus einem Bild
Sie können das PIL-Bild in ein Numpy-Array konvertieren und umgekehrt. Ein kleines Programm, um dasselbe zu demonstrieren, ist unten angegeben.
Beispiel
#Import required libraries
from PIL import Image
from numpy import array
#Open Image & create image object
img = Image.open('beach1.jpg')
#Show actual image
img.show()
#Convert an image to numpy array
img2arr = array(img)
#Print the array
print(img2arr)
#Convert numpy array back to image
arr2im = Image.fromarray(img2arr)
#Display image
arr2im.show()
#Save the image generated from an array
arr2im.save("array2Image.jpg")
Ausgabe
Wenn Sie das obige Programm als Example.py speichern und ausführen -
Es zeigt das Originalbild an.
Zeigt das von ihm abgerufene Array an.
Konvertiert das Array wieder in ein Bild und zeigt es an.
Da wir die show () -Methode verwendet haben, werden die Bilder mit dem Standard-PNG-Anzeigeprogramm wie folgt angezeigt.
[[[ 0 101 120]
[ 3 108 127]
[ 1 107 123]
...
...
[[ 38 59 60]
[ 37 58 59]
[ 36 57 58]
...
[ 74 65 60]
[ 59 48 42]
[ 66 53 47]]
[[ 40 61 62]
[ 38 59 60]
[ 37 58 59]
...
[ 75 66 61]
[ 72 61 55]
[ 61 48 42]]
[[ 40 61 62]
[ 34 55 56]
[ 38 59 60]
...
[ 82 73 68]
[ 72 61 55]
[ 63 52 46]]]
Original Image
Image constructed from the array