cv2.Canny()函数

cv2.Canny()函数

cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]])

  • image:输入图像

  • threshold1: minVal

  • threshold:maxval

  • aperturesize :Sobel算子大小,默认为3

  • L2gradient:为一个布尔值。若为真则使用L2范数进行计算(即对两个方向导数的平方和进行开方),否则使用L1范数(直接将两个方向导数的绝对值相加)

    ​ 梯度强度大于maxval的任何边缘肯定为边缘,而minVal以下的边缘肯定为非边缘,非边缘被舍弃。位于这两个阈值之间的是基于其连通性的分类边缘或非边缘。如果它们连接到“可靠边缘”像素,则它们被视为边缘的一部分。否则,他们也被丢弃。见下图:

例子

1
2
3
4
5
6
import numpy as np
import cv2
img = cv2.imread('dave.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
cv2.imwrite('dave_canny.jpg',edges)

处理前图片如下图所示

处理后图片如下图所示

Donate comment here