Analizar y procesar imágenes con Python

En este artículo hablaremos sobre cómo utilizar la librería Pillow para analizar y procesar imágenes en función de su contenido. La capacidad de analizar y procesar imágenes puede ser muy útil en diversas aplicaciones, como la detección de objetos, el seguimiento de movimiento, el reconocimiento de patrones y la mejora de la calidad de las imágenes.

Con Pillow, podemos realizar diversas operaciones para analizar y procesar imágenes. A continuación, presentamos algunos ejemplos:

Redimensionar una imagen

En este código se hace algo muy útil: se redimensiona una imagen para que tenga un tamaño específico. ¿Por qué es importante redimensionar una imagen? Bueno, a veces necesitas que una imagen tenga un tamaño específico para que se ajuste a un diseño o para que se muestre correctamente en una página web. O tal vez necesites reducir el tamaño de una imagen para que ocupe menos espacio en el disco duro. Sea cual sea el caso, redimensionar una imagen es una tarea muy común en la edición de imágenes.

Este código utiliza la biblioteca PIL (Python Imaging Library) para abrir una imagen en Python. La imagen original se especifica como ‘imagen.jpg’, pero puedes cambiar este nombre para que coincida con el nombre de la imagen que quieres redimensionar. Después de abrir la imagen original, se crea una variable llamada ‘size’ que contiene el tamaño deseado de la imagen redimensionada. En este caso, el tamaño es de 224 x 224 píxeles. Puedes cambiar este tamaño a cualquier otro que necesites para tu proyecto.

Una vez que se ha definido el tamaño deseado, se utiliza el método ‘resize()’ de la biblioteca PIL para redimensionar la imagen original a ese tamaño. El resultado se almacena en la variable ‘image’. Es importante tener en cuenta que este método cambia el tamaño de la imagen original y crea una nueva imagen con el tamaño deseado.

Finalmente, se guarda la imagen redimensionada utilizando el método ‘save()’ de la biblioteca PIL. La imagen se guarda con el nombre ‘imagen_resized.jpg’, pero puedes cambiar este nombre a cualquier otro que desees.

Este código es muy simple, pero es muy útil para la edición de imágenes en Python. Si necesitas redimensionar imágenes para un proyecto, puedes utilizar este código como punto de partida y ajustarlo según tus necesidades.

from PIL import Image

# Abrimos la imagen original
image = Image.open('imagen.jpg')

# Redimensionamos la imagen a un tamaño específico
size = (224, 224)
image = image.resize(size)

# Guardamos la imagen redimensionada
image.save('imagen_resized.jpg')

Una vez que hayamos redimensionado la imagen, podemos utilizar Keras para detectar objetos. Keras tiene modelos pre-entrenados para detección de objetos, como el modelo YOLO. Para usar el modelo YOLO en Keras, podemos cargar el modelo pre-entrenado y luego utilizar el método predict() para detectar objetos en una imagen.

Contornos y formas

Los contornos son las líneas que delimitan la forma de un objeto en una imagen. Para detectar contornos en una imagen con Pillow, podemos utilizar el método find_contours() de la librería scikit-image.

Lo primero que tenemos que hacer es instalar las dependencias, en este caso scikit-image y Pillow:

pip install scikit-image
pip install Pillow

Y aquí tenemos el código:

from PIL import Image, ImageDraw
from skimage import measure
import numpy as np

# Abrimos la imagen
image = Image.open('imagen.jpg')

# Convertimos la imagen a escala de grises
gray_image = image.convert('L')

# Convertimos la imagen a una matriz numpy
image_array = np.array(gray_image)

# Detectamos los contornos
contours = measure.find_contours(image_array, 0.8)

# Dibujamos los contornos en la imagen original
draw = ImageDraw.Draw(image)
for contour in contours:
    for i in range(len(contour) - 1):
        draw.line((contour[i][1], contour[i][0], contour[i+1][1], contour[i+1][0]), fill='red', width=2)

# Mostramos la imagen con los contornos
image.show()
Mejora de la calidad de la imagen

La calidad de una imagen puede mejorarse de varias maneras, como aumentando el contraste, la saturación y la nitidez. Para aumentar el contraste de una imagen con Pillow, podemos utilizar el método enhance().

from PIL import Image, ImageEnhance

# Abrimos la imagen
image = Image.open('imagen.jpg')

# Aumentamos el contraste
enhancer = ImageEnhance.Contrast(image)
image = enhancer.enhance(1.5)

# Mostramos la imagen con el contraste aumentado
image.show()

Estos son solo algunos ejemplos de cómo utilizar Pillow para analizar y procesar imágenes en función de su contenido. Pillow es una librería muy potente y versátil que nos permite realizar una gran variedad de operaciones de procesamiento de imágenes.

Deja una respuesta