Canny边缘检测:
图片必须先转换为灰度图像
主要步骤:
1、噪声抑制:使用高斯滤波器,对图像进行平滑处理;
2、计算梯度:计算每个像素点的梯度强度和方向;
3、非极大值抑制:在梯度方向上,对梯度幅值进行非极大值抑制,保留局部最大值点作为候选边缘;
4、双阈值检测:根据设定的高阈值和低阈值,对候选边缘进行阈值分割;高于高阈值的像素点被认为是强边缘,低于低阈值的像素点被认为是非边缘,介于两者之间的像素点根据与强边缘的连通性被划分为弱边缘或非边缘。
5、边缘连接:根据强边缘和与之相连的弱边缘之间的连通性,确定最终的边缘;像素点与强边缘相连或与与之相连的弱边缘相连的像素点被认为是边缘。
import cv2 # 读取图像 image = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE) # 应用Canny边缘检测 edges = cv2.Canny(image, threshold1, threshold2) # 显示原始图像和边缘图像 cv2.imshow('Original Image', image) cv2.imshow('Canny Edges', edges) cv2.waitKey(0) cv2.destroyAllWindows()
threshold1
和threshold2
是高阈值和低阈值,用于控制边缘的检测结果。根据具体的图像和应用需求,可以调整这两个阈值以获得最佳的边缘检测结果。