如何使用OpenCV Python中的Sobel和Laplacian导数查找图像梯度?

如何使用OpenCV Python中的Sobel和Laplacian导数查找图像梯度?

使用Sobel算子,我们可以在水平方向和垂直方向上计算图像梯度。梯度是针对灰度图像计算的。Laplacian算子使用二阶导数计算梯度。

语法

使用以下语法使用Sobel和Laplacian导数计算图像梯度 −

cv2.Sobel(img, ddepth, xorder, yorder, ksize)
cv2.Laplacian(img, ddepth)

参数

  • img − 原始输入图像。

  • ddepth − 输出图像的所需深度。它包含有关输出图像中存储的数据类型的信息。我们使用 cv2.CV_64F 作为ddepth。这是一个64位浮点数形式的OpenCV

  • xorder − 水平方向(X方向)中的导数阶数。将 xorder=1yorder=0 设置为X方向上的1阶导数。

  • yorder − 垂直方向(Y方向)中的导数阶数。将xorder=0,yorder=1设置为y方向上的1阶导数。

  • ksize − 内核大小。将ksize=5设置为5×5内核大小。

步骤

您可以使用以下步骤使用Sobel和Laplacian导数查找图像梯度 −

导入所需库。在以下所有Python示例中,必须使用的Python库是 OpenCV 。确保您已经安装了它。

import cv2

使用 cv2.imread() 读取输入图像作为灰度图像。

img = cv2.imread('lines.jpg',0)

使用 cv2.Sobel()cv2.Laplacian() 计算Sobel或Laplacian导数。该导数指的是图像梯度。

sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)

使用 cv2.imshow() 方法显示图像梯度。

cv2.imshow("Sobel X", sobelx)
cv2.waitKey(0)
cv2.destroyAllWindows()

我们将使用此图像作为以下示例中的 输入文件。

如何使用OpenCV Python中的Sobel和Laplacian导数查找图像梯度?

示例1

在下面的Python程序中,我们使用X和Y方向的1阶Sobel导数计算图像梯度,即水平方向和垂直方向。我们使用5×5的内核大小。

# 导入所需库
import cv2
import numpy as np
from matplotlib import pyplot as plt

# 以灰度图像的形式读取输入图像
img = cv2.imread('lines.jpg',0)

# 计算X方向上的1级Sobel导数
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)

# 计算Y方向上的1级Sobel导数
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)

# 显示sobelx和sobely
cv2.imshow("Sobel X", sobelx)
cv2.waitKey(0)
cv2.imshow("Sobel Y", sobely)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

当您运行上面的程序时,它会产生以下 两个输出窗口 。Sobel X窗口显示X方向(水平)的导数,Sobel Y窗口显示Y方向(垂直)的导数。

如何使用OpenCV Python中的Sobel和Laplacian导数查找图像梯度?

如何使用OpenCV Python中的Sobel和Laplacian导数查找图像梯度?

示例2

在下面的Python程序中,我们使用Laplacian导数计算图像梯度。

# 导入所需库
import cv2
import numpy as np
from matplotlib import pyplot as plt

# 以灰度图像的形式读取输入图像
img = cv2.imread('lines.jpg',0)

# 计算输入图像的Laplacian导数
laplacian = cv2.Laplacian(img,cv2.CV_64F)

# 显示laplacian
cv2.imshow("Laplacian", laplacian)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

当您运行上面的程序时,它会产生以下 输出窗口

如何使用OpenCV Python中的Sobel和Laplacian导数查找图像梯度?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV