Canny函式:
cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])
主要參數設置如下:
● image: 輸入影像
● threshold1: 參數為最小門檻值
● threshold2: 參數為最大門檻值
可設也可不設的參數如下:
● apertureSize: 參數預設為3, 也就是設置Sobel運算元的大小
● L2gradient: 參數為一個布林值, 如果是Ture, 則使用更精確的L2範數進行計算 (即兩個方向的導數的平方和在開方), 否則使用L1範數 (直接將兩個方向導數的絕對值相加)
※注意※
Canny只能處理灰階影像,
輸出結果為binary image(黑白影像, 或稱二值化影像),
其中包含偵測出來的邊緣結果
範例1:
import cv2
import numpy as np
img = cv2.imread('test.jpg', 0) #用灰階模式讀取RGB影像
edges = cv2.Canny(img, 100, 200)
cv2.imwrite('Canny_result.jpg', edges)
上圖為原圖, 下圖為測試結果:
如果將上面範例1的Canny參數做修改如下:
edges = cv2.Canny(img, 30, 100)
參數大小將影響偵測到的邊緣結果,
如下圖:
範例2:
加入GaussianBlur方法來降低雜訊值
import cv2
import numpy as np
img = cv2.imread('test.jpg', 0)
img = cv2.GaussianBlur(img, (3,3), 0)
edges = cv2.Canny(img, 30, 100)
cv2.imwrite('Canny_result.jpg', edges)
結果如下:
※查詢其他OpenCV用法如下※
OpenCV應用總整理: 點擊我
留言列表