venvtreintamonica) usuario@debian:~/escaldegrises$ cat ejemploMonicaTreinta.py
import cv2
import matplotlib.pyplot as plt
# Cargar imagen
image = cv2.imread('pajarito.jpg')
# Convertir a escala de grises
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Mostrar imagen original y en escala de grises
plt.subplot(1, 2, 1)
plt.title('Original')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.subplot(1, 2, 2)
plt.title('Escala de Grises')
plt.imshow(gray_image, cmap='gray')
plt.show()
(venvtreintamonica) usuario@debian:~/escaldegrises$ python3 ejemploMonicaTreinta.py
/home/usuario/escaldegrises/ejemploMonicaTreinta.py:19: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
plt.show()
(venvtreintamonica) usuario@debian:~/escaldegrises$
dio error El error que estás viendo se debe a que la ventana emergente de matplotlib
no se puede mostrar cuando se está ejecutando en algunos entornos, como la terminal de Python estándar, porque FigureCanvasAgg
es una interfaz de renderizado no interactiva.
Usamos este programa:
Usar cv2.imshow
en lugar de plt.show
Otra opción es usar cv2.imshow()
para mostrar las imágenes, ya que estás utilizando OpenCV para cargar y manipular las imágenes. Aquí hay un ejemplo de cómo hacerlo:
import cv2
# Cargar imagen
image = cv2.imread('ruta_a_tu_imagen.jpg')
# Convertir a escala de grises
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Mostrar imagen original
cv2.imshow('Original', image)
# Mostrar imagen en escala de grises
cv2.imshow('Escala de Grises', gray_image)
# Esperar a que se pulse una tecla y cerrar ventanas
cv2.waitKey(0)
cv2.destroyAllWindows()
Lo mismo en blanco y negro:
import cv2
# Cargar imagen
image = cv2.imread('pajarito.jpg')
# Convertir a escala de grises
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Mostrar imagen original
cv2.imshow('Original', image)
# Mostrar imagen en escala de grises
cv2.imshow('Escala de Grises', gray_image)
# Esperar a que se pulse una tecla y cerrar ventanas
cv2.waitKey(0)
cv2.destroyAllWindows()