36  Manipula imagenes con NumPy

¡Bienvenides a el arte de manipular imágenes con NumPy! En esta sesión, aprenderemos cómo NumPy, con su habilidad para manejar arreglos multidimensionales, se convierte en una herramienta poderosa para cargar, analizar y ejecutar operaciones complejas en imágenes. Desde ajustar colores hasta realizar transformaciones, NumPy nos ofrece un nivel de control y flexibilidad sin precedentes en el procesamiento de imágenes.

Nos equiparemos con Matplotlib y PIL (Python Imaging Library) para visualizar y manipular imágenes de manera efectiva en Python. A través de ejemplos prácticos, descubriremos cómo NumPy facilita la manipulación de imágenes en un entorno de Jupyter, revelando su potencial para revolucionar nuestro enfoque en el procesamiento de imágenes.

Prepárate para explorar las vastas posibilidades que NumPy ofrece en el mundo del análisis y manipulación de imágenes. ¡Vamos a desbloquear el potencial de NumPy en el procesamiento de imágenes!

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
f = '../data/python.png'
logo = Image.open(f)
logo

img = np.array(logo)
img
array([[[0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        ...,
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]],

       [[0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        ...,
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]],

       [[0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        ...,
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]],

       ...,

       [[0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        ...,
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]],

       [[0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        ...,
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]],

       [[0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        ...,
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]]], dtype=uint8)
img.shape # RGBAlpha
(400, 400, 4)
alpha = img[:,:,3]
alpha.shape
(400, 400)
alpha
array([[0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       ...,
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)
fig, ax = plt.subplots()

a = ax.imshow(alpha,cmap='gray')
fig.colorbar(a)

fig, ax = plt.subplots(4,figsize=(10,12))

a = ax[0].imshow(img[:,:,0],cmap='gray')
b = ax[1].imshow(img[:,:,1],cmap='gray')
c = ax[2].imshow(img[:,:,2],cmap='gray')
d = ax[3].imshow(img[:,:,3],cmap='gray')

fig.colorbar(a)
fig.colorbar(b)
fig.colorbar(c)
fig.colorbar(d)