Almohada Python - ML con Numpy
En este capítulo, usamos numpy para almacenar y manipular datos de imágenes usando la biblioteca de imágenes de Python - "almohada".
Antes de continuar con este capítulo, abra el símbolo del sistema en modo administrador y ejecute el siguiente comando para instalar numpy:
pip install numpy
Note - Esto solo funciona si tiene PIP instalado y actualizado.
Creando imagen desde Numpy Array
Creando una imagen RGB usando PIL y guárdala como un archivo jpg. En el siguiente ejemplo:
Cree una matriz de 150 por 250 píxeles.
Llene la mitad izquierda de la matriz con naranja.
Llene la mitad derecha de la matriz con azul.
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")
Salida
Crear imágenes en escala de grises
La creación de imágenes en escala de grises es ligeramente diferente a la creación de una imagen RGB. Podemos usar la matriz bidimensional para crear una imagen en escala de grises.
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')
Salida
Creando una matriz numpy a partir de una imagen
Puede convertir la imagen PIL a una matriz numpy y viceversa. A continuación se indica un pequeño programa para demostrar lo mismo.
Ejemplo
#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")
Salida
Si guarda el programa anterior como Example.py y ejecuta:
Muestra la imagen original.
Muestra la matriz recuperada.
Convierte la matriz de nuevo en imagen y la muestra.
Dado que hemos utilizado el método show (), las imágenes se muestran utilizando la utilidad de visualización PNG predeterminada, de la siguiente manera.
[[[ 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