cv2.minAreaRect参数详解
时间: 2023-03-20 08:01:06 浏览: 617
cv2.minAreaRect() 函数是 OpenCV 中用于寻找二维图像中最小外接矩形的函数,其函数原型为:
```
rect = cv2.minAreaRect(points)
```
其中,参数 `points` 是一个二维点集,可以是 numpy 数组、列表或元组等类型,表示二维图像中的点集,函数将在这个点集中寻找最小外接矩形。
函数返回值 `rect` 是一个包含矩形中心点、宽度、高度和旋转角度的元组,可以通过下面的方式获取矩形的信息:
```
center, size, angle = rect
```
其中,`center` 表示最小外接矩形的中心点坐标,`size` 是矩形的宽度和高度,`angle` 表示矩形的旋转角度,单位为度。
另外,函数还可以接受第二个可选参数 `boxPoints`,用于输出最小外接矩形的四个顶点坐标,例如:
```
rect, box = cv2.minAreaRect(points, boxPoints=True)
```
其中,`rect` 表示最小外接矩形的信息,`box` 是一个长度为 4 的 numpy 数组,包含最小外接矩形的四个顶点坐标,可以通过下面的方式获取:
```
box = cv2.boxPoints(rect)
```
需要注意的是,返回的坐标是浮点型,需要使用 `np.int0()` 进行转换才能作为绘制函数的参数。
相关问题
cv2.minAreaRect()详解
cv2.minAreaRect函数是OpenCV中用于计算一组点集的最小外接矩形的函数。它的返回值是一个矩形结构体,包括矩形的中心坐标、宽度、高度和旋转角度等信息。
函数的参数包括输入的点集(可以是Numpy数组或列表)、可选的掩码图像(用于指定哪些点要计算最小外接矩形,可以省略)、可选的旋转矩阵(用于指定矩形的方向,可以省略)。
该函数的工作原理是先使用cv2.boundingRect函数计算点集的最小外接矩形,然后再使用cv2.minAreaRect函数计算该矩形的最小外接旋转矩形,得到最终结果。
例如,以下代码演示了如何使用cv2.minAreaRect函数计算一组点集的最小外接矩形并绘制出来:
```python
import cv2
import numpy as np
# 生成一组随机点集
points = np.random.randint(0, 200, (50, 2))
# 计算最小外接矩形
rect = cv2.minAreaRect(points)
# 将矩形信息转换为四个顶点坐标
box = cv2.boxPoints(rect)
box = np.int0(box)
# 绘制最小外接矩形
img = np.zeros((200, 200, 3), dtype=np.uint8)
cv2.drawContours(img, [box], 0, (0, 0, 255), 2)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
运行结果如下图所示:
![minAreaRect](https://img-blog.csdn.net/20180502214359807?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlYnNpdGU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)
cv2.minAreaRect的参数和选择
cv2.minAreaRect() 函数是用于计算点集的最小包围矩形(也称为旋转矩形)。它的参数如下:
```python
cv2.minAreaRect(points)
```
其中,`points` 表示点集,可以是一个 Numpy 数组或者一个 OpenCV 的 Contours 对象。
选择最小包围矩形的算法取决于 `points` 的维度和形状。如果 `points` 是一个二维的 Numpy 数组,则可以选择使用 OpenCV 提供的两种算法:
- `cv2.cv.Box2D()`:这个函数计算的是能够包含所有点的最小矩形,但这个矩形不一定是水平的。它返回一个带有矩形中心、大小和旋转角度的 Box2D 结构体。
- `cv2.minAreaRect()`:这个函数计算的是能够包含所有点的最小旋转矩形,这个矩形是水平的,也就是说,它的长和宽分别与 x 轴和 y 轴平行。它返回一个带有矩形中心、大小和旋转角度的 RotatedRect 结构体。
如果 `points` 是一个三维的 Numpy 数组,则只能使用 `cv2.minAreaRect()` 函数计算能够包含所有点的最小旋转矩形。