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

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

本文介绍如何使用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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。