(考完六级补上)

1、Sobel算子

2、Laplacian算子

3、Canny算子

edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])
  • 参数一:需要处理的图像
  • 参数二:最小阈值MinThresh
  • 参数三:最大阈值MaxThresh
    介于MinThresh与MaxThresh之间的被识别为边界

4、运行结果

4.1 sobel

图像处理-图像边缘处理_拉普拉斯算子

4.2 Laplacian

图像处理-图像边缘处理_ci_02

5、完整代码

def EdgeProcess(image):
Result1_x = cv.Sobel(image,ddepth=-1,dx=1,dy=0)
Result1_y = cv.Sobel(image,ddepth=-1,dx=0,dy=1)

#x方向一阶边缘
SobelResult_x = cv.convertScaleAbs(Result1_x)
#y方向一阶边缘
SobelResult_y = cv.convertScaleAbs(Result1_y)
#整幅图像一阶边缘
SobelResult_xy = cv.bitwise_or(SobelResult_x,SobelResult_y)

#SobelResult_xy 是三通道图像
SobelResult_Result = cv.hconcat((SobelResult_x,SobelResult_y,SobelResult_xy))
cv.imshow("SobelResult",SobelResult_Result)
cv.waitKey()

#拉普拉斯算子
Result2 = cv.Laplacian(image,ddepth=-1,ksize=3)
LaplacianResult = cv.convertScaleAbs(Result2)
cv.imshow("Laplacian",LaplacianResult)
cv.waitKey()
return;