python實現圖像梯度


一,定義與作用

圖像梯度作用:獲取圖像邊緣信息

二,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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM