cv2.moments中心
时间: 2023-10-27 12:53:13 浏览: 93
cv2.moments() 函数是 OpenCV 中用于计算图像的矩的函数之一。矩是图像的一种特征,可以用于计算图像的中心点、面积、角度等信息。
在函数中,我们需要提供一个二值化图像(通常是通过阈值处理后得到的)作为输入。cv2.moments() 函数将根据输入的图像计算出图像的不同矩,并返回一个包含这些矩的字典。
其中,最常用的矩是中心矩(central moments),用于计算图像的中心点坐标。可以通过下述代码获取图像的中心点坐标:
```python
import cv2
# 读取图像并进行阈值处理
image = cv2.imread('image.jpg', 0)
ret, thresh = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)
# 计算图像的矩
M = cv2.moments(thresh)
# 计算图像的中心点坐标
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
print("图像的中心点坐标:({},{})".format(cX, cY))
```
在上述代码中,首先读取了一张图像并进行了阈值处理,得到了二值化图像。然后使用 cv2.moments() 函数计算了图像的矩,并通过计算得到了中心点坐标 cX 和 cY。
注意:这里假设输入的图像为二值化图像,即只有黑白两种颜色。如果输入的图像是彩色图像,需要先将其转换为灰度图像,然后再进行阈值处理。
相关问题
import cv2 import numpy as np original = cv2.imread(r'E:\opencv\er_888gai.jpg') print(original.shape) # 查找物体轮廓 def findcontour(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 图像灰度化 ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 图像二值化 image, contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 查找物体轮廓 return image, contours, hierarchy image, contours, hierarchy = findcontour(original) nums = len(contours) color = [(255, 0, 0), (0, 255, 0), (0, 0, 255)] contourssplit=[] for i in range(nums): temp = np.zeros(original.shape, np.uint8) contourssplit.append(temp) contourssplit[i] = cv2.drawContours(contourssplit[i], contours, i, color[i], 10) a = cv2.moments(contours[i]) print("轮廓" + str(i) + "的面积:%d" % cv2.moments(contours[i])['m00']) print("轮廓" + str(i) + "的重心:%d" % int(cv2.moments(contours[i])['m10']/cv2.moments(contours[i])['m00']), int(cv2.moments(contours[i])['m01']/cv2.moments(contours[i])['m00'])) print("轮廓" + str(i) + "的长度:%d" % cv2.arcLength(contours[i], True))
这段代码是通过Python语言中的cv2模块和numpy模块导入相关的函数和类。其中,cv2.imread函数用来读取名为"E:\opencv\er_888gai.jpg"的图片,将其存储在original变量中。最后输出图片的高、宽、通道数等信息(即图片的形状),并打印在屏幕上。
cv2.moments
cv2.moments() 是 OpenCV 提供的一个函数,用于计算图像的各类矩(Moments)。矩是图像形状分析中的基本工具,它可以用来计算图像的质心、面积、轮廓等特征。cv2.moments() 函数可以接收一个二值化的图像作为输入,返回一个包含各类矩信息的字典。例如,可以通过该字典计算图像的重心位置、面积等信息。这个函数的原型如下:
```
cv2.moments(array[,binaryImage])
```
其中,array 表示输入的图像矩阵,binaryImage 表示是否使用二值化图像。当 binaryImage 为 True 时,输入的图像矩阵必须为二值化后的图像。
阅读全文