在 Python 中使用 OpenCV 的图像时刻

Manav Narula 2023年1月30日
  1. 使用 moments() 函数在 Python 中使用 OpenCV 计算矩
  2. 结论
在 Python 中使用 OpenCV 的图像时刻

Python 使用 opencv 库来执行各种计算机视觉任务。这些任务涉及非常有效地读取和处理图像。

图像有许多属性。opencv 库提供了许多处理轮廓的函数。

轮廓与帮助提供有关沿图像中对象边界的曲线及其相关形状的信息相关联。轮廓的一个这样的特征称为矩。

图像的时刻是根据计算机视觉定义的。它可以描述为给定图像的像素强度的加权平均值。

我们可以使用图像矩找到有关区域、形状方向及其质心的信息。

本教程将讨论在 Python 中使用 opencv 的图像时刻。

使用 moments() 函数在 Python 中使用 OpenCV 计算矩

在 Python 中,我们可以使用 opencv 库中的 moments() 函数来使用图像时刻。使用此函数计算多边形的三阶矩,并返回数组中的矩。

我们可以使用给定数组中返回的值来计算形状的质心等属性。

现在让我们看一个相同的例子。

import cv2

i = cv2.imread("img6.jpg")
img_g = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
ret, img = cv2.threshold(img_g, 127, 255, 0)

M = cv2.moments(img)
X = int(M["m10"] / M["m00"])
Y = int(M["m01"] / M["m00"])

cv2.circle(i, (X, Y), 5, (255, 255, 255), -1)
cv2.imshow("Output", i)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出:

在 Python 中使用 opencv 的图像时刻

在上面的示例中,我们使用图像矩找到圆的质心,矩是使用 moments() 函数计算的。

首先,我们读取所需的图像。使用将图像转换为所需颜色空间的 cvtColor 函数将图像转换为灰度。

然后我们将阈值技术应用于该图像。这将有助于解决噪声并过滤具有极值的像素。

我们使用 threshold() 函数并在函数内提供阈值。在我们的例子中,大于 127 的每个像素都被更改为 255,小于 12 的像素被设置为零。

然后我们计算图像矩。我们使用返回数组中的值来查找圆心的位置。

使用 circle() 函数在原始图像上绘制质心。此函数在质心坐标处创建一个小圆圈。

显示最终输出,我们使用 waitKey()destroyAllWindows() 函数等待用户按下某个键,然后自动关闭输出窗口。

结论

本教程讨论了计算机视觉领域的图像矩以及如何使用 Python 中的 opencv 库计算矩。为此,我们使用了 opencv 库中的 moments() 函数。

矩以数组的形式返回,可用于查找形状的方向、面积和质心等细节。我们在示例中计算圆的质心。

代码有图解,每一行都有解释。

作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn