Ejemplo de Detección de Bordes (Canny):
¡¡¡Ojo!!!Pon en "ruta a tu imagen " el nombre de la foto
import cv2
import matplotlib.pyplot as plt
# Cargar imagen
image = cv2.imread('ruta_a_tu_imagen.jpg', cv2.IMREAD_GRAYSCALE)
# Aplicar detección de bordes Canny
edges = cv2.Canny(image, 100, 200)
# Mostrar imagen con bordes
plt.imshow(edges, cmap='gray')
plt.title('Bordes Canny')
plt.show()
¡¡¡Funciona!!!
Pero si aparece este error
(borde) usuario@debian:~/proyectos/escalgrs2$ python3 bordes.py
/home/usuario/proyectos/escalgrs2/bordes.py:13: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown plt.show()
El error que estás viendo, UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown, ocurre porque matplotlib está configurado para usar un backend que no es interactivo y no puede mostrar las gráficas directamente en algunas terminales de Python. Para solucionar este problema, tienes varias opciones:
2. Guardar la imagen en lugar de mostrarla:
Si solo quieres ver el resultado y no necesariamente necesitas una ventana interactiva, puedes guardar la imagen en un archivo en lugar de mostrarla:
plt.imshow(edges, cmap='gray')
plt.title('Bordes Canny')
plt.savefig('bordes_canny.png')
Esto guardará la imagen con los bordes detectados en un archivo llamadobordes_canny.png
que puedes abrir manualmente.Programa con la solución si aparece el error (en mi debian):
import cv2
import matplotlib.pyplot as plt
# Cargar imagen
image = cv2.imread('pajarito.jpg', cv2.IMREAD_GRAYSCALE)
# Aplicar detección de bordes Canny
edges = cv2.Canny(image, 100, 200)
# Mostrar imagen con bordes
plt.imshow(edges, cmap='gray')
plt.title('Bordes Canny')
plt.savefig('bordes_canny.png')
Capturas de la primera opción: