OpenCV3 - Canny 边界检测

本贴最后更新于 1638 天前,其中的信息可能已经时移世异

cv.Canny()

理论

Canny Edge Detection 是一个流行的边界检测算法. 它是一个多步骤的算法

  1. 降噪
  2. 寻找图像的灰度梯度
  3. 非最大值抑制
  4. 迟滞阈值

Canny Edge Detection in OpenCV

OpenCV 把如上所有步骤集成到同一个函数(cv.Canny())中.

  • 第一个参数是我们输入的图片
  • 第二和第三个参数分别是最小值和最大值
  • 第四个参数是孔径尺寸, 它被用于寻找图像梯度, 是 Sobel kernel 的尺寸, 默认值是 3.
  • 最后一个参数是 L2gradient(指定查找渐变幅度的公式), 如果为 True, 它使用如上更精密的公式, 否则使用 Edge_Gradient(G)=|Gx|+|Gy|, 默认值为 False
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('messi5.jpg',0)
edges = cv.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()

运行结果:

canny1.jpg

参考文件

Canny Edge Detection

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...