Canny边缘检测算法是John F. Canny于 1986 年开发出来的一个多级边缘检测算法。
Canny边缘检测算法可以分为以下5个步骤:
- 应用高斯滤波来平滑图像,目的是去除噪声
- 找寻图像的强度梯度(intensity gradients)
- 应用非最大抑制(non-maximum suppression)技术来消除边误检
- 应用双阈值的方法来决定可能的(潜在的)边界
- 利用滞后技术来跟踪边界
Canny使用梯度区间来定义边缘,如设定梯度区间为100-200,某个像素的梯度大于200,那么定义为边缘,若梯度小于100,则其为非边缘,若梯度为100-200之间,若其与某个已知像素边缘相连,那么判断其为边缘,否则不是。
- import cv2
- # 读取图片
- gray = cv2.imread("xg11gauss.jpg", cv2.IMREAD_GRAYSCALE)
- # canny边缘检测
- canny = cv2.Canny(gray, 100, 200)
- # 显示
- cv2.imshow("gray", gray)
- cv2.imshow("canny", canny)
- cv2.waitKey()