Canny邊緣檢測
函數原型
1 edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])
參數解釋
-
image:源圖像
-
threshold1:閾值1
-
threshold2:閾值2
-
apertureSize:可選參數,Sobel算子的大小
其中,較大的閾值2用於檢測圖像中明顯的邊緣,但一般情況下檢測的效果不會那么完美,邊緣檢測出來是斷斷續續的。所以這時候用較小的第一個閾值用於將這些間斷的邊緣連接起來。
函數返回的是二值圖,包含檢測出的邊緣
使用
1 import numpy as np 2 import cv2 as cv 3 cv.namedWindow("images") 4 def nothing(): 5 pass 6 cv.createTrackbar("s1","images",0,255,nothing) 7 cv.createTrackbar("s2","images",0,255,nothing) 8 img = cv.imread("test/scene2.png",0) 9 while(1): 10 s1 = cv.getTrackbarPos("s1","images") 11 s2 = cv.getTrackbarPos("s2","images") 12 out_img = cv.Canny(img,s1,s2) 13 cv.imshow("img",out_img) 14 k = cv.waitKey(1) 15 if k==ord("q"): 16 break 17 cv.destroyAllWindows()