detección de bordes Procedimiento General caramelo
-
El uso de un filtro gaussiano para suavizar la imagen, filtrado de ruido.
-
Cálculo de la intensidad de gradiente y la dirección de cada píxel en la imagen.
-
La aplicación de un valor que no sea máximo (Non-supresión máxima) la inhibición, para eliminar la respuesta espurio causado por la detección de bordes.
-
La aplicación de detección de doble umbral (doble Umbral) para determinar el borde real y potencial.
-
Al inhibir el borde finalizado detectar un borde débil aislado.
1, un filtro de Gauss
2, la dirección del gradiente y
3, la supresión no maximal
4, de detección de umbral dual
siguiente significado breve común de los parámetros de esta función cv2.Candy ()
cv2.Canny(src, thresh1, thresh2,edges,apertureSize,L2gradient)
src:输入原图(必须为单通道图)
thresh1:minVal
thresh2:maxVal
apertureSize:Sobel算子的大小
L2gradient:bool类型;
true: 使用更精确的L2范数进行计算(即两个方向的倒数的平方和再开放)
false:使用L1范数(直接将两个方向导数的绝对值相加)
gray=cv2.imread("lena.jpg",cv2.IMREAD_GRAYSCALE)
img=cv2.GaussianBlur(gray,(3,3),0)
v1=cv2.Canny(img,80,150)
v2=cv2.Canny(img,50,100)
res = np.hstack((v1,v2))
cv_show(res,'res')
gray=cv2.imread("car.png",cv2.IMREAD_GRAYSCALE)
img=cv2.GaussianBlur(gray,(3,3),0)
v1=cv2.Canny(img,120,250)
v2=cv2.Canny(img,50,100)
res = np.hstack((v1,v2))
cv_show(res,'res')