python实现图像梯度

2023-04-28,,

一,定义与作用

图像梯度作用:获取图像边缘信息

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

python实现图像梯度的相关教程结束。

《python实现图像梯度.doc》

下载本文的Word格式文档,以方便收藏与打印。