如何在OpenCV Python中计算图像的Hu矩?
可以使用 cv2.HuMoments() 函数来找到 Hu 矩,它返回对平移、旋转和缩放不变的七个矩。第七个矩是偏移不变的。
为计算 Hu 矩,我们需要先找到图像。使用对象轮廓计算对象的图像矩。因此,首先,我们检测对象的轮廓,然后应用 cv2.moments() 函数来计算矩。
语法
使用以下语法来调用该函数 −
在此,
- cnt - 是图像中对象轮廓点的 NumPy 数组。
-
M - 上面计算的图像矩。
步骤
您可以使用以下步骤计算图像中的 Hu 矩 –
导入所需的库。 在所有以下 Python 示例中,所需的 Python 库是 OpenCV。请确保您已经安装了它。
使用 cv2.imread() 方法读取输入图像并将其转换为灰度图像。
对灰度图像进行阈值处理以创建二元图像。
使用 cv2.findContours() 函数在图像中查找轮廓。
使用 cv2.moments(cnt) 函数计算轮廓的矩。
使用 cv2.HuMoments(M) 函数为特定轮廓找出 Hu 矩。
在输入图像上绘制轮廓。
输出 Hu 矩并显示带有绘制轮廓的图像。
为了更好地理解,让我们看一些示例。
我们将在以下示例中使用以下图像作为 输入文件 。
示例 1
在以下 Python 程序中,我们检测图像中的轮廓,并为第一个轮廓找到 Hu 矩。我们还在图像上绘制第一个轮廓。
输出
当您执行上面的代码时,它将产生以下输出 −
并且我们得到以下输出窗口,显示图像中检测到的第一个轮廓
示例2
在下面的Python程序中,我们检测图像中的轮廓,并找到所有轮廓的Hu矩。 我们还在图像上绘制所有轮廓。
输出
当您执行上述代码时,它将生成以下输出−
我们得到以下输出窗口,显示图像中检测到的轮廓−