版权声明:原创内容,转载请注明来源 https://blog.csdn.net/gangzhucoll/article/details/78824590
一、什么是边缘检测
图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘。
二、canny 算法五步骤
- 高斯模糊
- 灰度转换
- 计算梯度
- 非最大信号抑制
- 高低阈值输出二值图像
三、示例代码
import cv2 as cv
import numpy as np
def edge(img):
#高斯模糊,降低噪声
blurred = cv.GaussianBlur(img,(3,3),0)
#灰度图像
gray=cv.cvtColor(blurred,cv.COLOR_RGB2GRAY)
#图像梯度
xgrad=cv.Sobel(gray,cv.CV_16SC1,1,0)
ygrad=cv.Sobel(gray,cv.CV_16SC1,0,1)
#计算边缘
#50和150参数必须符合1:3或者1:2
edge_output=cv.Canny(xgrad,ygrad,50,150)
#图一
cv.imshow("edge",edge_output)
dst=cv.bitwise_and(img,img,mask=edge_output)
#图二(彩色)
cv.imshow('cedge',dst)
src=cv.imread('15.jpg')
#图三(原图)
cv.imshow('def',src)
edge(src)
cv.waitKey(0)
cv.destroyAllWindows()
图一
图二
图三