Python OpenCV minAreaRect 生成最小外接矩形的方法

唐可
唐可
发布时间:2026-10-13 | 6人浏览过
原创

本文介绍如何使用OpenCV的cv2.minAreaRect函数计算点集的最小外接矩形。该函数返回中心坐标、宽高及旋转角度,需配合cv2.boxPoints获取四个顶点坐标。重点解析旋转角度的定义范围、width与height的非大小定义规则,以及OpenCV坐标系下的角度正负含义,帮助开发者正确绘制和理解矩形参数。

minAreaRect函数基本用法

在Python OpenCV中,若需获取点集cnt的最小外接矩形,可调用cv2.minAreaRect(cnt)函数。其中,cnt为包含点坐标的点集数组或向量,其包含的点数量不固定。

以绘制任意四边形(或任意多边形)的最小外接矩形为例,点集cnt应存储该四边形的4个顶点坐标,即点集中包含4个点。

获取矩形顶点坐标


cnt = np.array([[x1,y1],[x2,y2],[x3,y3],[x4,y4]]) # 必须是array数组的形式
rect = cv2.minAreaRect(cnt) # 得到最小外接矩形的(中心(x,y), (宽,高), 旋转角度)
box = cv2.cv.BoxPoints(rect) # cv2.boxPoints(rect) for OpenCV 3.x 获取最小外接矩形的4个顶点坐标
box = np.int0(box)

cv2.minAreaRect()函数返回一个Box2D结构体rect,其内容包含最小外接矩形的中心坐标(x, y)、宽度width、高度height以及旋转角度。为了绘制该矩形,需通过cv2.cv.BoxPoints()函数获取矩形的4个顶点坐标box,返回格式为[[x0,y0], [x1,y1], [x2,y2], [x3,y3]]。由此得到的最小外接矩形的4个顶点顺序、中心坐标、宽度、高度及旋转角度(单位为度数,非弧度)之间的对应关系如下:

旋转角度与宽高定义解析

需要注意以下关键点:

  • 旋转角度θ是指水平轴(x轴)逆时针旋转至与矩形第一条边相交时的夹角。该边的长度被定义为width,另一条边的长度定义为height。因此,在此语境下,width与height并非依据边长的长短来定义。
  • 在OpenCV坐标系中,原点位于左上角。相对于x轴,逆时针旋转角度为负值,顺时针旋转角度为正值。因此,旋转角度θ的取值范围为(-90度, 0]。

以上内容为本文的全部介绍,希望能为读者提供学习帮助,并欢迎大家继续支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表