Canny算法:
流程:
- 噪声去除:高斯滤波
- 计算图像梯度:sobel算子,计算梯度大小和方向
- 非极大值抑制:利用梯度方向像素来判断当前像素是否为边界点
- 滞后阈值:设置两个阈值,确定最终的边界
Canny()函数:
canny = cv2.Canny(image, threshold1, threshold2)
- image:灰度图,
- threshold1: minval,较小的阈值将间断的边缘连接起来
- threshold2: maxval,较大的阈值检测图像中明显的边缘
import cv2 as cv
from matplotlib import pyplot as plt
# 1 图像读取
img = cv.imread('./1.png', 0)
# 2 Canny边缘检测
lowThreshold = 100
max_lowThreshold = 150
canny = cv.Canny(img, lowThreshold, max_lowThreshold)
# 3 图像展示
plt.figure(figsize=(10, 8), dpi=100)
plt.subplot(121),
plt.imshow(img, cmap=plt.cm.gray)
plt.title('原图')
plt.xticks([]), plt.yticks([])
plt.subplot(122),
plt.imshow(canny, cmap=plt.cm.gray)
plt.title('Canny检测后结果')
plt.xticks([]),
plt.yticks(