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(

OpenCV Canny边缘检测_图像梯度

OpenCV Canny边缘检测_图像梯度_02