如何使用cv2.moments()函数计算轮廓重心,旋转角度,还能计算什么?
时间: 2023-02-08 14:05:04 浏览: 165
cv2.moments()函数可以用来计算图像或轮廓的一系列矩形矩。它可以计算重心(也称为质心或中心点),旋转角度以及轮廓长度等特征。
使用方法如下:
```
import cv2
# 读入图片并转换为灰度图
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 使用Canny边缘检测检测边缘
edges = cv2.Canny(gray, 50, 150)
# 寻找轮廓
_, contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 取第一个轮廓
cnt = contours[0]
# 计算轮廓的矩形矩
moments = cv2.moments(cnt)
# 计算质心(重心)
cx = int(moments['m10'] / moments['m00'])
cy = int(moments['m01'] / moments['m00'])
# 计算旋转角度
angle = 0.5 * math.atan2(2 * moments['mu11'], moments['mu20'] - moments['mu02'])
# 输出质心和旋转角度
print("重心坐标:", (cx, cy))
print("旋转角度:", angle)
```
除了质心和旋转角度,cv2.moments()函数还可以计算轮廓的长度、周长、面积、方向等信息。可以通过查看函数文档了解更多信息。
阅读全文