wandaxiao 2019-06-28
Canny边缘检测是一种流行的边缘检测算法.它是由John F. Canny开发的,
A点位于边缘(垂直方向),梯度方向与边缘垂直. B点和C点处于梯度方向。 因此,用点B和C检查点A,看它是否形成局部最大值.如果是这样,则考虑下一阶段,否则,它被抑制(置零).
边缘A高于maxVal,因此被视为“真实边缘”。
虽然边C低于maxVal,但它连接到边A,因此也被视为有效边,我们得到完整的曲线。
但边缘B虽然高于minVal并且与边缘C的区域相同,但它没有连接到任何“真实边缘”,因此被丢弃。
因此,我们必须相应地选择minVal和maxVal才能获得正确的结果
我们最终得到的是图像中的强边缘
cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]])
$$Edge\_Gradient \; (G) = |G_x| + |G_y|$$
代码:
import cv2 from matplotlib import pyplot as plt img = cv2.imread('img.jpg',0) edges = cv2.Canny(img,100,200) plt.subplot(121),plt.imshow(img,cmap = 'gray') plt.title('Original Image'), plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(edges,cmap = 'gray') plt.title('Edge Image'), plt.xticks([]), plt.yticks([]) plt.show()