當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python OpenCV Canny()用法及代碼示例


在本文中,我們將看到 OpenCV 中的 Canny Edge 過濾器。 OpenCV 中的 Canny() 函數用於檢測圖像中的邊。

用法:cv2.Canny(image, T_lower, T_upper, aperture_size, L2Gradient)

Where:

  • 圖像:將應用 Canny 過濾器的輸入圖像
  • T_lower:Hysteresis Thresholding 中的下閾值
  • T_upper:Hysteresis Thresholding中的上閾值
  • aperture_size:Sobel 濾波器的孔徑大小。
  • L2Gradient:布爾參數,用於更精確地計算邊梯度。

Canny 邊檢測是一個由 4 個主要步驟組成的算法:

  • 使用高斯平滑減少噪聲。
  • 使用 Sobel 濾波器計算圖像梯度。
  • 應用非最大值抑製或 NMS 來僅吉普車局部最大值
  • 最後,應用在 Canny() 函數中使用的 2 個閾值 T_upper 和 T_lower 的滯後閾值。

輸入圖像



的基本示例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()

輸出

Canny() 函數與 Aperture_size

這是一個可選參數,用於指定用於計算 Canny 算法中的梯度的 Sobel 濾波器的階數。默認值為 3,其值應為 3 到 7 之間的奇數。當您想要檢測更詳細的特征時,可以增加 Aperture 大小。

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()

輸出:



Canny() 函數使用 L2Gradient

這是一個布爾參數,指定您是要計算通常的梯度方程還是 L2Gradient 算法。同樣,它是一個可選參數。 L2gradient 不是我的 sqrt(gradient_x_square + gradient_y_square),而 L1gradient 隻是 abs(gradient_x) + abs(gradient_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()

輸出:

Canny() 函數具有孔徑大小和 L2gradient

在這裏,我們將在函數中使用這兩個屬性。

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()

輸出:




相關用法


注:本文由純淨天空篩選整理自ayushmankumar7大神的英文原創作品 Python OpenCV – Canny() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。