一,定义与作用
图像梯度作用:获取图像边缘信息
二,Sobel 算子与函数的使用
(1)Sobel 算子------来计算变化率
(2)Sobel函数的使用
(3-1)代码实现(分别):
(3-2)代码实现(合起):
三,scharr算子与函数的使用
(1) scharr算子------近似求取每个像素的变化率,近似求取每一个导数。
四,Laplacian算子与函数的使用
五,代码
Sobel算子:
1 # -*- coding=GBK -*- 2 import cv2 as cv 3 4 5 #图像梯度:索贝尔算子 6 def sobel_image(image): 7 grad_x = cv.Sobel(image, cv.CV_32F, 1, 0)#x方向导数 8 grad_y = cv.Sobel(image, cv.CV_32F, 0, 1)#y方向导数 9 gradx = cv.convertScaleAbs(grad_x) 10 grady = cv.convertScaleAbs(grad_y) 11 cv.imshow("X方向", gradx)#颜色变化在水平分层 12 cv.imshow("Y方向", grady)#颜色变化在垂直分层 13 gradxy = cv.addWeighted(gradx, 0.5, grady, 0.5, 0) 14 cv.imshow("合成", gradxy) 15 16 src = cv.imread("C://1.jpg") 17 cv.imshow("原来", src) 18 sobel_image(src) 19 cv.waitKey(0) 20 cv.destroyAllWindows()
scharr算子:
1 def scharr_image(image): 2 grad_x = cv.Scharr(image, cv.CV_32F, 1, 0)#x方向导数 3 grad_y = cv.Scharr(image, cv.CV_32F, 0, 1)#y方向导数 4 gradx = cv.convertScaleAbs(grad_x) 5 grady = cv.convertScaleAbs(grad_y) 6 cv.imshow("X方向", gradx)#颜色变化在水平分层 7 cv.imshow("Y方向", grady)#颜色变化在垂直分层 8 gradxy = cv.addWeighted(gradx, 0.5, grady, 0.5, 0) 9 cv.imshow("合成", gradxy)
Laplacian算子:
1 def lapalian_image(image): 2 dst = cv.Laplacian(image, cv.CV_32F) 3 lpls = cv.convertScaleAbs(dst) 4 cv.imshow("拉普拉斯", lpls)