canny边缘检测原理
1、去噪
2、梯度
sobel算子计算梯度值和梯度方向
梯度方向一般和边界垂直;梯度方向归为四大类(水平、垂直、对角线)。
3、非极大值抑制
遍历图像,去除所有不是边界的点。实现方法是遍历每个像素,判断每个像素是否是周围具有相同梯度方向的像素点中的最大值,若是就是边界,否则不是边界。
4、滞后阈值
Canny函数使用
滞后阈值越小,得到的边界细节信息越多。
# -*- coding: utf-8 -*-
import cv2
img = cv2.imread("C:\\imgs\\lena256.bmp", flags = cv2.IMREAD_UNCHANGED)
canny1 = cv2.Canny(img, 100, 200)
canny2 = cv2.Canny(img, 64, 128)
cv2.imshow("img", img)
cv2.imshow("canny1", canny1)
cv2.imshow("canny2", canny2)
cv2.waitKey()
cv2.destroyAllWindows()