一、什么是边缘检测
图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘。
二、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()