¿Cómo leer, visualizar y guardar una imagen en Python usando OpenCV?

Por Administrador

CONTENIDO

  1. Leer una imagen
  2. Visualizar una imagen
  3. Guardar/Almacenar una imagen

El primer paso para realizar aplicaciones de visión por computador es sin duda tener el “material” o en este caso la imagen con la cual trabajar, es por ello que el segundo post que te presento (luego de la bienvenida) es: ¿cómo leer la imagen usando OpenCV en Python?.

En un principio será necesario importar la librería OpenCV, para ello usamos la siguiente línea:

import cv2

NOTA: Si aún no has instalado OpenCV en python, ya sea en tu computador o en tu raspberry, te recomiendo que lo instales con los tutoriales de pyimagesearch. Lo sé, sus posts están desarrollados en inglés, sin embargo son los mejores. Demás está decir que están excelentemente explicados, paso a paso.

En esta ocasión vamos a trabajar con esta imagen:

Figura 1: Logo de OpenCV (fuente)

LEER UNA IMAGEN EN PYTHON – OPENCV

Ahora procedemos a leer la imagen, para ello necesitamos la función cv2.imread, en ella tendremos que especificar el path o dirección en donde se encuentra almacenado la imagen. Si tanto el script donde estás desarrollando estas líneas y la imagen están en una misma dirección, solo será necesario escribir el nombre, seguido de su extensión.

imagen = cv2.imread('logo.png') 

¡A tener en cuenta!

Al momento que leemos una imagen, tal y como lo hemos hecho en la línea 2, ésta por defecto es leída en BGR, así también podríamos escribirlo de la siguiente manera: imagen = cv2.imread('logo.png',1) El número 1 indica también que será leída en BGR, así que podríamos omitirlo como he mostrado previamente.

En OpenCV existen algunos otros números o comandos con los cuales condicionamos como queremos que se lea una imagen, por ejemplo si usamos 0: imagen = cv2.imread('logo.png',0) .La imagen será leída en escala de grises. Puedes buscar más información de otras opciones que podrías utilizar en la documentación de OpenCV.

VISUALIZAR UNA IMAGEN

Hasta este punto ya hemos leído la imagen, pero debemos visualizarla, para ello usaremos cv2.imshow, en ella debemos especificar el nombre de la ventana que se va a visualizar, seguido de la variable donde está almacenada la imagen.

Se visualiza cierto tiempo para ello se emplea cv2.waitKey. Esta permite especificar el tiempo en milisegundos, por ejemplo: cv2.waitKey(1000), hará que la imagen se vea durante 1 segundo. Hay una opción muy utilizada, y es que al usar cv2.waitKey(0), la imagen se visualiza infinitamente, hasta que presiones cualquier tecla.

Finalmente para cerrar la visualización creada usamos cv2.destroyAllWindows. Veamos:

cv2.imshow('Logo OpenCV',imagen)
cv2.waitKey(0)
cv2.destroyAllWindows()

Figura 2: Visualización de la imagen

GUARDAR O ALMACENAR UNA IMAGEN

Para almacenar una imagen, lo único que se necesita es usar cv2.imwrite, en donde tendremos que especificar el nombre de la imagen a almacenar junto con la extensión, luego la variable a la que está asignada dicha imagen. Como podrás darte cuenta, esta función trabaja similar a cv2.imshow.

Para este ejemplo, vamos a leer la imagen en escala de grises y la guardaremos, esta se almacenará en la misma dirección donde se encuentra el script donde estás desarrollando este programa.

import cv2

imagen = cv2.imread('logo.png',0)
cv2.imwrite('Grises.png',imagen)
cv2.imshow('Logo OpenCV Grises',imagen)
cv2.waitKey(0)
cv2.destroyAllWindows()

Figura 3: Visualización de la imagen leída en escala de grises

La figura 3 muestra la imagen que se guardó gracias a cv2.imwrite.

Y aquí llegamos al final de este post. Puedes ver el video también. ¿Qué te ha parecido?.

Resumen del contenido de este post

REFERENCIAS

[1] https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_image_display/py_image_display.html