源《opencv3机器视觉Python语言实现》,仅用作个人复习
canny 边缘检测
代码
效果
部分代码:
# canny 边缘检测
'''
1、使用高斯滤波器,平滑图像,除燥
2、计算像素点的梯度强度和方向
3、应用非极大值抑制,消除边缘检测带来的杂散响应
4、应用双阈值检测来确定真实的边缘 推荐高低阈值比 T2/T1 =3:1 or2:1
5、通过抑制孤立的弱边缘,来最终完成边缘检测
'''
image = img.copy()
# 预处理
blurred = cv2.GaussianBlur(image, (3, 3), 0)#高斯滤波 模糊处理
gray = cv2.cvtColor(blurred, cv2.COLOR_RGB2GRAY)#灰度化
xgrad = cv2.Sobel(gray, cv2.CV_16SC1, 1, 0) #计算图像梯度 x方向梯度
ygrad = cv2.Sobel(gray, cv2.CV_16SC1, 0, 1) #计算图像梯度 y方向梯度
edge_output = cv2.Canny(xgrad, ygrad, 50, 150)#边缘检测
cv2.imshow("Canny Edge", edge_output)