1、索贝尔算子
def sobel_image(image):
grad_x = cv.Sobel(image, cv.CV_32F, 1, 0) # x方向导数
grad_y = cv.Sobel(image, cv.CV_32F, 0, 1) # y方向导数
gradx = cv.convertScaleAbs(grad_x)
grady = cv.convertScaleAbs(grad_y)
cv.imshow("xDireaction", gradx)
cv.imshow("yDireaction", grady)
gradxy = cv.addWeighted(gradx, 0.5, grady, 0.5, 0)
cv.imshow("compose", gradxy)
src = cv.imread("./static/image/blur.jpg")
cv.imshow("image", src)
sobel_image(src)
cv.waitKey(0)
cv.destroyAllWindows()
运行效果:
2、schaar算子:增强边缘
def scharr_image(image):
grad_x = cv.Scharr(image, cv.CV_32F, 1, 0) # x方向导数
grad_y = cv.Scharr(image, cv.CV_32F, 0, 1) # y方向导数
gradx = cv.convertScaleAbs(grad_x)
grady = cv.convertScaleAbs(grad_y)
cv.imshow('XDireaction', gradx)
cv.imshow('YDireaction', grady)
gradxy = cv.addWeighted(gradx, 0.5 ,grady, 0.5, 0)
cv.imshow('compose', gradxy)
src = cv.imread("./static/image/blur.jpg")
cv.imshow("image", src)
scharr_image(src)
cv.waitKey(0)
cv.destroyAllWindows()
效果如下:
3、拉普拉斯算子
def lapalian_image(image):
dst = cv.Laplacian(image, cv.CV_32F)
lpls = cv.convertScaleAbs(dst)
cv.imshow('lapalian', lpls)
src = cv.imread("./static/image/blur.jpg")
cv.imshow("image", src)
lapalian_image(src)
cv.waitKey(0)
cv.destroyAllWindows()
运行效果: