Leyendo una imagen en OpenCV usando Python

Prerrequisito: Fundamentos de OpenCV

En este artículo, intentaremos abrir una imagen usando la biblioteca OpenCV (Open Source Computer Vision). Los siguientes tipos de archivos son compatibles con la biblioteca OpenCV:

  • Mapas de bits de Windows: *.bmp, *.dib
  • Archivos JPEG: *.jpeg, *.jpg
  • Gráficos de red portátiles – *.png 
  • WebP – *.webp 
  • Rásteres solares: *.sr, *.ras 
  • Archivos TIFF: *.tiff, *.tif 
  • Datos geoespaciales ráster y vectoriales compatibles con GDAL 

  Para usar la biblioteca OpenCV en python, necesitamos instalar estas bibliotecas como requisito previo:

  1. Biblioteca Numpy: La computadora procesa imágenes en forma de array para lo cual se usa NumPy y OpenCV lo usa en segundo plano.
  2. OpenCV python: la biblioteca OpenCV anteriormente era cv pero la versión actualizada es cv2. Se utiliza para manipular imágenes y videos.
     

Para instalar estas bibliotecas, necesitamos ejecutar estos comandos pip en cmd:

pip install opencv-python
pip install numpy
pip install matplotlib

Los pasos para leer y mostrar una imagen en OpenCV son:

1. Lee una imagen usando la función imread().

2. Cree una ventana GUI y muestre una imagen usando la función imshow().

3. Utilice la función waitkey(0) para mantener la ventana de la imagen en la pantalla durante el número de segundos especificado, o significa que hasta que el usuario la cierre, se mantendrá la ventana GUI en la pantalla.

4. Elimine la ventana de imagen de la memoria después de mostrarla usando la función destroyAllWindows().

Comencemos leyendo una imagen. utilizando cv2.
 Para leer las imágenes se utiliza el método cv2.imread(). Este método carga una imagen del archivo especificado. Si la imagen no se puede leer (debido a la falta de un archivo, permisos incorrectos, formato no compatible o no válido), este método devuelve una array vacía.

Sintaxis: cv2.imread(ruta, bandera)

Parámetros:
ruta: Una string que representa la ruta de la imagen a leer.
flag: Especifica la forma en que se debe leer la imagen. Su valor por defecto es cv2.IMREAD_COLOR

Valor devuelto: este método devuelve una imagen que se carga desde el archivo especificado.

Nota: 

  1. La imagen debe estar en el directorio de trabajo o se debe proporcionar una ruta completa de la imagen.
  2. De forma predeterminada, OpenCV almacena imágenes en color en formato BGR (azul, verde y rojo).

Los tres tipos de banderas se describen a continuación:

cv2.IMREAD_COLOR: Especifica cargar una imagen a color. Se descuidará cualquier transparencia de la imagen. Es la bandera por defecto. Alternativamente, podemos pasar el valor entero 1 para esta bandera.
cv2.IMREAD_GRAYSCALE: Especifica cargar una imagen en modo escala de grises. Alternativamente, podemos pasar el valor entero 0 para esta bandera.
cv2.IMREAD_UNCHANGED: Especifica cargar una imagen como tal incluyendo canal alfa. Alternativamente, podemos pasar el valor entero -1 para esta bandera.

Los códigos a continuación son implementaciones para leer imágenes y mostrar imágenes en la pantalla usando las funciones de las bibliotecas OpenCV y matplotlib.
 
Ejemplo #1 (usando OpenCV): 

La imagen utilizada es:

 

Python3

# Python code to read image
import cv2
 
# To read image from disk, we use
# cv2.imread function, in below method,
img = cv2.imread("geeksforgeeks.png", cv2.IMREAD_COLOR)
 
# Creating GUI window to display an image on screen
# first Parameter is windows title (should be in string format)
# Second Parameter is image array
cv2.imshow("image", img)
 
# To hold the window on screen, we use cv2.waitKey method
# Once it detected the close input, it will release the control
# To the next line
# First Parameter is for holding screen for specified milliseconds
# It should be positive integer. If 0 pass an parameter, then it will
# hold the screen until user close it.
cv2.waitKey(0)
 
# It is for removing/deleting created GUI window from screen
# and memory
cv2.destroyAllWindows()

Producción:

Lectura de una imagen usando cv2 en formato BGR

Podemos ver la forma, es decir, el ancho y el alto y los canales de la imagen usando el atributo de forma.

img.shape
Output:
(225, 225, 3)

La biblioteca Matplotlib utiliza el formato de color RGB para leer una imagen en color. Aquí estamos demostrando un ejemplo de lectura de una imagen usando esta biblioteca.
Ejemplo#2

Python3

#import cv2, numpy and matplotlib libraries
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread("geeks.png")
#Displaying image using plt.imshow() method
plt.imshow(img)
 
#This code is contributed by sheetal verma

La lectura de imágenes con cv2 y la visualización con matplotlib mostrarán la imagen en formato BGR.

Nota: vea la diferencia en los colores de las imágenes leídas por la biblioteca cv2 y matplotlib. Porque cv2 usa el formato de color BGR y matplotlib usa el formato de color RGB. Para convertir BGR a RGB, usamos una función:

Ejemplo#3:

Python3

#import cv2, numpy and matplotlib libraries
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread("geeks.png")
 
# Converting BGR color to RGB color format
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
 
#Displaying image using plt.imshow() method
plt.imshow(img)

Producción:

El formato de color BGR cambia al formato de color RGB

Ejemplo #4: Apertura en modo de escala de grises

Python

# Python program to explain cv2.imread() method
 
# importing cv2
import cv2
 
# path
path = r'geeksforgeeks.png'
 
# Using cv2.imread() method
# Using 0 to read image in grayscale mode
img = cv2.imread(path, 0)
 
# Displaying the image
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Producción : 

La forma de la imagen en escala de grises se puede mostrar utilizando el atributo de forma.

img.shape
Output:
(225, 225)

Publicación traducida automáticamente

Artículo escrito por harsshmalik y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *