opencv python最小包围矩形
时间: 2025-01-07 17:47:43 浏览: 8
### 使用 OpenCV-Python 实现最小包围矩形
为了创建最小外接矩形,`cv2.minAreaRect()` 函数用于获取给定轮廓的最小面积边界框。此函数返回一个包含矩形中心 `(x, y)`、宽度和高度以及旋转角度的结果元组。
对于绘制该矩形,则需进一步利用 `cv2.boxPoints()` 将上述结果转换成四个顶点坐标以便于绘图操作[^1]。
以下是具体实现方法:
```python
import cv2
import numpy as np
# 创建空白图像并定义测试轮廓
img = np.zeros((500, 500), dtype=np.uint8)
contours = [
[[100], [100]],
[[300], [100]],
[[300], [300]],
[[100], [300]]
]
cnt = np.array(contours).reshape((-1, 1, 2)).astype(np.int32)
rect = cv2.minAreaRect(cnt) # 获取最小外接矩形参数
box = cv2.boxPoints(rect) # 获得矩形角点位置
box = np.intp(box) # 数据类型转换为整型
cv2.drawContours(img, [box], -1, (255, 255, 255), thickness=2) # 绘制矩形到图片上
cv2.imshow('Min Area Rectangle', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码首先初始化了一张黑色背景的灰度图像,并设定了一个简单的四边形作为目标对象。接着调用了 `minAreaRect()` 来获得围绕这个多边形的最佳拟合矩形的位置信息;再通过 `boxPoints()` 方法得到实际可用于绘画的四个角落坐标的数组形式表示法。最后一步则是将这些数据应用至原图画出相应的图形[^3]。
阅读全文