如何使用OpenCV Python中的Sobel和Laplacian导数查找图像梯度?
使用Sobel算子,我们可以在水平方向和垂直方向上计算图像梯度。梯度是针对灰度图像计算的。Laplacian算子使用二阶导数计算梯度。
语法
使用以下语法使用Sobel和Laplacian导数计算图像梯度 −
参数
- img − 原始输入图像。
-
ddepth − 输出图像的所需深度。它包含有关输出图像中存储的数据类型的信息。我们使用 cv2.CV_64F 作为ddepth。这是一个64位浮点数形式的OpenCV。
-
xorder − 水平方向(X方向)中的导数阶数。将 xorder=1 和 yorder=0 设置为X方向上的1阶导数。
-
yorder − 垂直方向(Y方向)中的导数阶数。将xorder=0,yorder=1设置为y方向上的1阶导数。
-
ksize − 内核大小。将ksize=5设置为5×5内核大小。
步骤
您可以使用以下步骤使用Sobel和Laplacian导数查找图像梯度 −
导入所需库。在以下所有Python示例中,必须使用的Python库是 OpenCV 。确保您已经安装了它。
使用 cv2.imread() 读取输入图像作为灰度图像。
使用 cv2.Sobel() 或 cv2.Laplacian() 计算Sobel或Laplacian导数。该导数指的是图像梯度。
使用 cv2.imshow() 方法显示图像梯度。
我们将使用此图像作为以下示例中的 输入文件。
示例1
在下面的Python程序中,我们使用X和Y方向的1阶Sobel导数计算图像梯度,即水平方向和垂直方向。我们使用5×5的内核大小。
输出
当您运行上面的程序时,它会产生以下 两个输出窗口 。Sobel X窗口显示X方向(水平)的导数,Sobel Y窗口显示Y方向(垂直)的导数。
示例2
在下面的Python程序中,我们使用Laplacian导数计算图像梯度。
输出
当您运行上面的程序时,它会产生以下 输出窗口 。