Reflejo horizontal (espejo) a imagen con Python e imageio - Trabajo con imágenes

Reflejo horizontal a imagen con Python

En este post de trabajo con imágenes en Python te mostraré cómo aplicar un reflejo horizontal a una imagen, de modo que podamos voltear la imagen de manera horizontal. Para ello vamos a trabajar con los pixeles de la imagen.

La asignación dice así:

Con este filtro queremos lograr el mismo resultado que un espejo, por lo que cualquier píxel ubicado al izquierdo ahora deberá estar en el derecho y viceversa. Se mantendrán todos los píxeles originales, solo que están organizados de manera diferente.

Entonces veamos cómo hacerlo usando Python, numpy e imageio.

Requisitos

Necesitas Python y PIP. Cuando tengas pip instala numpy e imageio con: pip install numpy imageio

No es obligatorio usar numpy (pero el ejercicio sí lo requiere, así que lo he usado), basta con imageio para obtener los pixeles de la imagen como una matriz así como lo hice cuando trabajé con esteganografía en Python.

Vamos a trabajar con una imagen BMP pero cualquier imagen que pueda ser convertida a matriz debería funcionar.

El algoritmo

Con el enfoque que vamos a usar para aplicar el espejo o reflejo horizontal a una imagen con Python básicamente trabajaremos con una matriz.

Esta matriz es de 2 dimensiones, y cada valor que tiene a su vez es una lista con 3 valores que representan el Red, Green y Blue del pixel.

Entonces haremos lo que hacíamos hace tiempo con C para invertir una cadena (para que notes cómo algoritmos tan simples sirven para cosas más complejas), que es recorrer la matriz desde el inicio hasta la mitad, y en cada paso intercambiar el extremo actual por el extremo opuesto.

De modo que vamos a ir fila por fila. Y en cada fila vamos a tomar el pixel 1 para intercambiarlo con el último pixel, luego el segundo pixel con el penúltimo y así hasta llegar a la mitad.

Código para reflejo horizontal en Python

Lo que expliqué anteriormente para modificar la imagen y girarla como si fuera un espejo queda así en código Python:

Y para usarlo necesitamos unas funciones que convierten la imagen a matriz. Entonces el código completo queda así:

Al ejecutarlo funciona correctamente y con cualquier tipo de imágenes, siempre y cuando sea un BMP de 24 bits.

Reflejo horizontal (espejo) a imagen con Python e imageio - Trabajo con imágenes
Reflejo horizontal (espejo) a imagen con Python e imageio – Trabajo con imágenes

De este modo podemos aplicar un reflejo horizontal a una imagen usando únicamente Python, modificando los pixeles de la imagen.

Por aquí te dejo más tutoriales de Python.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario