Python OpenCV – Función Canny()

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

Deja una respuesta

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