You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shapely中寻找一组2D点的可旋转最小外接矩形

使用Shapely计算2D点集的最小外接旋转矩形

核心实现步骤

Shapely内置了直接获取最小旋转外接矩形的能力,核心逻辑是利用凸包缩小计算范围(最小外接矩形必然包裹点集的凸包),再调用专属属性得到结果:

  • 将原始2D点集转换为Shapely的MultiPoint对象
  • 计算点集的凸包(convex_hull),减少后续计算量
  • 调用凸包对象的minimum_rotated_rectangle属性,直接获取最小旋转外接矩形

代码示例

from shapely.geometry import MultiPoint

# 定义示例2D点集
points = [(1, 2), (3, 4), (5, 1), (2, 5), (4, 2)]

# 转换为MultiPoint对象
multi_point = MultiPoint(points)

# 计算点集的凸包
convex_hull = multi_point.convex_hull

# 获取最小旋转外接矩形
min_rotated_rect = convex_hull.minimum_rotated_rectangle

# 输出矩形的顶点坐标
print("最小旋转外接矩形顶点:", list(min_rotated_rect.exterior.coords))

# 输出矩形面积
print("矩形面积:", min_rotated_rect.area)

补充说明

  • 若点集本身已是凸集,可跳过凸包计算,直接对MultiPoint调用minimum_rotated_rectangle,但先计算凸包能提升大数量点集的处理效率
  • minimum_rotated_rectangle返回Polygon对象,可通过Shapely的多边形方法获取中心、边长、旋转角度等信息(旋转角度可通过矩形边的向量计算得出)

内容的提问来源于stack exchange,提问作者nickponline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:11:20