opencv图像最小外包围矩形
时间: 2025-01-21 19:48:52 浏览: 38
### 使用 OpenCV 计算图像的最小外包围矩形
为了计算图像中的对象的最小外包围矩形,可以利用 `cv2.minAreaRect()` 函数来获取旋转后的边界框。此函数返回一个 Box2D 结构体 (中心(x,y), (宽度,高度),旋转角度)[^1]。
对于得到的结果,如果希望将其转换成四个顶点坐标的形式,则可以通过 `cv2.boxPoints()` 方法实现这一目的[^2]。下面是一个完整的 Python 示例代码展示如何完成上述操作:
```python
import cv2
import numpy as np
def min_area_rect_demo(img_path):
img = cv2.imread(img_path)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours,hierarchy= cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2:]
for cnt in contours:
rect = cv2.minAreaRect(cnt) # 获取最小外接矩形的(中心(x,y),(宽,高),旋转角度)
box = cv2.boxPoints(rect) # 获得矩形的4个顶点坐标
box = np.int0(box) # 将浮点数转为整型
cv2.drawContours(img,[box],0,(0,0,255),2)# 绘制红色轮廓
cv2.imshow('img',img)
cv2.waitKey()
cv2.destroyAllWindows()
min_area_rect_demo('your_image.png')
```
这段程序会读取指定路径下的图片文件,并对其进行二值化处理以便更容易找到目标物体的轮廓;接着调用 `findContours` 来检测这些轮廓并逐一应用 `minAreaRect` 和 `boxPoints` 得到每个轮廓对应的最小面积矩形及其四个角的位置信息;最后通过 `drawContours` 把结果可视化出来显示给用户查看[^3]。
阅读全文
相关推荐



















