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)

 

posted @ 2020-09-07 17:02  山那边不是山  阅读(2502)  评论(0编辑  收藏  举报