一,定義與作用
圖像梯度作用:獲取圖像邊緣信息
二,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)