canny边缘检测算法
canny边缘检测算法介绍
canny是边缘检测算法在1986年提出,很好的一个边缘检测器,很常用也很实用的图像处理方法
canny算法步骤
#1.高斯模糊-GaussianBlur
#2.灰度转换-cvtColor
#3.计算梯度-Sobel/Scharr
#4.非最大信号抑制
#5.高低阈值输出二值图像
import cv2
import numpy as np
def edge_demo(image):
blurred=cv2.GaussianBlur(image, (3, 3), 0) #高斯模糊,减小噪声
gray=cv2.cvtColor(blurred,cv2.COLOR_BGR2GRAY) #灰度图转换
#x gradient
grad_x=cv2.Sobel(gray, cv2.CV_16SC1, 1, 0) #x梯度方向
#Y gradient
grad_y=cv2.Sobel(gray, cv2.CV_16SC1, 0, 1) #y梯度方向
edge_output =cv2.Canny(grad_x,grad_y,50,150)
cv2.imshow("canny edge", edge_output)
dst=cv2.bitwise_and(image, image, mask=edge_output) #逻辑与运算
cv2.imshow("color edge", dst)
print("------HELLO WORLD-------")
src=cv2.imread("dwaii.png")
cv2.imshow("source image",src)
edge_demo(src)
cv2.waitKey(0)
cv2.destroyAllWindows()
原图
边缘检测结果