opencv中检测矩形计算中心点位置
时间: 2023-10-01 10:03:13 浏览: 161
在OpenCV中,可以使用cv2.minAreaRect()函数检测矩形,并使用cv2.boxPoints()函数获取该矩形的四个角点的坐标。然后,可以计算这些点的平均值以找到矩形的中心点。
以下是一个示例代码:
```python
import cv2
# 读取图像
img = cv2.imread('rect.jpg')
# 转换成灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化图像
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
# 检测轮廓
contours = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
# 循环遍历轮廓
for cnt in contours:
# 检测矩形
rect = cv2.minAreaRect(cnt)
box = cv2.boxPoints(rect)
box = np.int0(box)
# 计算中心点位置
center = (int(np.mean(box[:, 0])), int(np.mean(box[:, 1])))
# 绘制矩形和中心点
cv2.drawContours(img, [box], 0, (0, 0, 255), 2)
cv2.circle(img, center, 5, (0, 255, 0), -1)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先读取图像并将其转换为灰度图像。然后,使用cv2.threshold()函数进行二值化,并使用cv2.findContours()函数检测轮廓。
接下来,我们循环遍历每个轮廓,并使用cv2.minAreaRect()函数检测矩形。然后,使用cv2.boxPoints()函数获取矩形的四个角点的坐标,并使用np.mean()函数计算这些点的平均值以找到矩形的中心点。
最后,我们使用cv2.drawContours()和cv2.circle()函数绘制矩形和中心点,并使用cv2.imshow()函数显示结果图像。