如何利用Python中的OpenCV计算图像的形态梯度?
形态梯度是通过对图像进行膨胀和腐蚀的差异来计算得到的。我们使用 cv2.morphologyEx() 方法来计算形态梯度。形态梯度在分割、边缘检测和查找物体轮廓时使用。
语法
以下是此方法使用的语法 –
其中,
- img - 原始输入图像。
-
op - 形态学操作的类型。我们使用 cv2.MORPH_GRADIENT 。
-
kernel - 内核。我们可以将内核定义为所有值为 dtype uint8 的NumPy矩阵。
步骤
您可以使用以下步骤计算图像的形态梯度 –
导入所需库。在以下所有Python示例中,所需的Python库是 OpenCV 。请确保您已经安装它。
使用 cv2.imread() 读取输入图像作为灰度图像。
使用 cv2.morphologyEx() 计算形态梯度。传递所需大小的内核。
使用 cv2.imshow() 方法显示梯度图像。
让我们看一些示例,以便更好的理解。
示例 1
在此Python示例中,我们使用2×2内核计算输入图像的形态梯度。
我们将使用以下图像作为程序的输入文件输出
当您运行上述Python程序时,将生成以下输出窗口 –
示例 2
在本示例中,我们使用三个不同的内核 – 2×2、3×3和5×5内核计算输入图像的形态梯度。
我们将使用以下图像作为此程序的 输入文件 :
输出
当您执行以上程序时,它将生成 三个输出窗口 。三个不同的窗口对应于使用不同内核大小的三个不同形态梯度图像。请注意三个输出之间的差异。