openCV中的Canny边缘检测
# Canny 边缘检测是一种非常流行的边缘检测算法,是John F.Canny 在1986 年提出的。它是一个有很多步构成的算法。
# 第一步:由于边缘检测很容易受到噪声影响,所以第一步是使用5x5的高斯滤波器去除噪声
# 第二步:计算图像梯度
# 第三步:非极大值抑制,在获得梯度的方向和大小之后,应该对整幅图像做一个扫描,去除那些非边界上的点。对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的.
# 第四步:滞后阈值,现在要确定那些边界才是真正的边界。这时我们需要设置两个阈值:minVal 和maxVal。当图像的灰度梯度高于maxVal 时被认为是真的边界,那些低于minVal 的边界会被抛弃。如果介于两者之间的话,就要看这个点是否与某个被确定为真正的边界点相连,如果是就认为它也是边界点,如果不是就抛弃。
# Canny边界检测:在OpenCV 中只需要一个函数:cv2.Canny(),就可以完成以上几步。
import cv2.cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('lufei.jpg')
edges = cv2.Canny(img,100,200)
cv2.imshow('Original', img)
cv2.imshow('Edge Image', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()