En este artículo, veremos el filtro Canny Edge en OpenCV. La función Canny() en OpenCV se utiliza para detectar los bordes de una imagen.
Sintaxis: cv2.Canny(imagen, T_inferior, T_superior, tamaño_apertura, L2Gradiente)
Dónde:
- Imagen: imagen de entrada a la que se aplicará el filtro Canny
- T_lower: Valor de umbral inferior en Hysteresis Thresholding
- T_upper: Valor de umbral superior en Hysteresis Thresholding
- opening_size: Tamaño de apertura del filtro Sobel.
- L2Gradient: Parámetro booleano utilizado para mayor precisión en el cálculo de Edge Gradient.
La detección Canny Edge es un algoritmo que consta de 4 pasos principales:
- Reduzca el ruido utilizando el suavizado gaussiano.
- Calcule el gradiente de la imagen usando el filtro Sobel.
- Aplique supresión no máx. o NMS para controlar los máximos locales
- Por último, aplique el umbral de histéresis que tiene dos valores de umbral T_upper y T_lower que se utilizan en la función Canny().
Imagen de entrada :
Ejemplo básico de la función Canny()
Python3
import cv2 img = cv2.imread("test.jpeg") # Read image # Setting parameter values t_lower = 50 # Lower Threshold t_upper = 150 # Upper threshold # Applying the Canny Edge filter edge = cv2.Canny(img, t_lower, t_upper) cv2.imshow('original', img) cv2.imshow('edge', edge) cv2.waitKey(0) cv2.destroyAllWindows()
Salida :
Función Canny() con Aperture_size
Este es un parámetro opcional que se utiliza para especificar el orden del filtro Sobel utilizado para calcular el gradiente en el algoritmo de Canny. El valor predeterminado es 3 y su valor debe ser impar entre 3 y 7. Puede aumentar el tamaño de la apertura cuando desee detectar características más detalladas.
Python3
import cv2 img = cv2.imread("test.jpeg") # Read image # Setting All parameters t_lower = 100 # Lower Threshold t_upper = 200 # Upper threshold aperture_size = 5 # Aperture size # Applying the Canny Edge filter # with Custom Aperture Size edge = cv2.Canny(img, t_lower, t_upper, apertureSize=aperture_size) cv2.imshow('original', img) cv2.imshow('edge', edge) cv2.waitKey(0) cv2.destroyAllWindows()
Producción:
Función Canny() con L2Gradient
Es un parámetro booleano que especifica si desea calcular la ecuación de gradiente habitual o el algoritmo L2Gradient. Nuevamente, es un parámetro opcional. L2gradient no es nada mi sqrt (gradiente_x_cuadrado + degradado_y_cuadrado) mientras que L1gradiente es solo abs (gradiente_x) + abs (gradiente_y).
Python3
import cv2 img = cv2.imread("test.jpeg") # Read image t_lower = 100 # Lower Threshold t_upper = 200 # Upper threshold aperture_size = 5 # Aperture size L2Gradient = True # Boolean # Applying the Canny Edge filter with L2Gradient = True edge = cv2.Canny(img, t_lower, t_upper, L2gradient = L2Gradient ) cv2.imshow('original', img) cv2.imshow('edge', edge) cv2.waitKey(0) cv2.destroyAllWindows()
Producción:
Función Canny() con tamaño de apertura y gradiente L2
Aquí usaremos ambos atributos dentro de la función.
Python3
import cv2 img = cv2.imread("test.jpeg") # Read image # Defining all the parameters t_lower = 100 # Lower Threshold t_upper = 200 # Upper threshold aperture_size = 5 # Aperture size L2Gradient = True # Boolean # Applying the Canny Edge filter # with Aperture Size and L2Gradient edge = cv2.Canny(img, t_lower, t_upper, apertureSize = aperture_size, L2gradient = L2Gradient ) cv2.imshow('original', img) cv2.imshow('edge', edge) cv2.waitKey(0) cv2.destroyAllWindows()
Producción:
Publicación traducida automáticamente
Artículo escrito por ayushmankumar7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA