python的opencv如何实现从轮廓求重心
时间: 2023-06-18 10:05:06 浏览: 292
在 Python 的 OpenCV 中,可以使用 `cv2.moments()` 函数计算轮廓的矩和中心。其中,第一步是计算轮廓的矩,第二步是利用计算出的矩计算出轮廓的重心。
下面是一个简单的例子,展示了如何从轮廓中计算出重心坐标:
```python
import cv2
# 读取图像,转为灰度图像
img = cv2.imread('contours.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 计算轮廓矩和重心
M = cv2.moments(contours[0])
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
# 在图像上标出重心
cv2.circle(img, (cx, cy), 5, (0, 0, 255), -1)
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在代码中,我们首先读入一张图像,并将其转为灰度图像。然后,使用 `cv2.threshold()` 函数对图像进行二值化处理。接下来,使用 `cv2.findContours()` 函数查找图像中的轮廓。
在找到轮廓后,我们使用 `cv2.moments()` 函数计算轮廓的矩。然后,利用计算出的矩,我们可以计算出轮廓的重心坐标。最后,我们在图像上标出重心,并将结果显示出来。
注意,这里我们假设轮廓存在,因此直接使用了 `contours[0]` 来获取轮廓。实际上,在实际应用中,我们需要先检查是否找到了轮廓,再进行计算。
阅读全文