Canny邊緣檢測是一種經典的圖像邊緣檢測算法,它在圖像中找到強度梯度的變化,從而識別出圖像中的邊緣。Canny邊緣檢測的優點包括高靈敏度和低誤檢率。
在OpenCV中,cv2.Canny()
函數用于執行Canny邊緣檢測。
基本語法如下:
edges = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]])
參數說明:
image
: 輸入圖像,通常為灰度圖像。threshold1
和threshold2
: 閾值,用于確定邊緣的強度梯度。通常threshold1
是較小的閾值,threshold2
是較大的閾值。edges
(可選): 輸出的邊緣圖像。apertureSize
(可選): Sobel算子的大小,通常為3。L2gradient
(可選): 如果為True,則使用更精確的L2范數進行梯度計算,否則使用L1范數。通常設置為False。
示例代碼:
import cv2
import numpy as np
# 讀取灰度圖像
img = cv2.imread(r"C:\Users\mzd\Desktop\opencv\images.jpg", cv2.IMREAD_GRAYSCALE)
# 使用Canny邊緣檢測
edges = cv2.Canny(img, 50, 150)# 顯示原始圖像和Canny邊緣圖像
cv2.imshow('Original Image', img)
cv2.imshow('Canny Edges', edges)# 等待用戶按下任意鍵
cv2.waitKey(0)
cv2.destroyAllWindows()
在這個例子中,cv2.Canny()
用于執行Canny邊緣檢測。threshold1
和 threshold2
是梯度強度的閾值,通過調整這兩個閾值,可以影響檢測到的邊緣的數量和質量。Canny邊緣檢測是圖像處理中常用的邊緣檢測方法之一。