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

如何根据给定顶点坐标计算多边形边界框的面积

多边形边界框面积计算方法

你之前掌握的(box[2] - box[0]) * (box[3] - box[1])是轴对齐矩形的专属面积公式,任意非自交闭合多边形的面积计算统一用**鞋带公式(Shoelace Formula)**即可,刚好适配你现在的坐标存储格式。

你的坐标数据满足鞋带公式的使用前提:顶点沿多边形边界按固定顺序(顺时针/逆时针均可)排列,且最后一个顶点和第一个顶点坐标重合,完成了多边形闭合。

公式逻辑

假设多边形共有n个有效顶点,按排列顺序记为$(x_0,y_0),(x_1,y_1)...(x_{n-1},y_{n-1})$,闭合时补充$(x_n,y_n)=(x_0,y_0)$,面积计算方式为:
面积 = 1/2 * |所有相邻顶点对的(x_i*y_{i+1} - x_{i+1}*y_i)的累加和|
取绝对值是为了消除顶点顺时针/逆时针排列带来的符号差异。

计算步骤

  • 按索引把两个元组的x、y值配对,得到按顺序排列的顶点序列
  • 遍历每一组相邻顶点(包含最后一个顶点和第一个顶点的相邻配对),分别累加所有$x_i*y_{i+1}$得到sum1,累加所有$x_{i+1}*y_i$得到sum2
  • 计算sum1和sum2的差值,取绝对值后除以2,就是最终的多边形面积

可直接运行的代码示例

# 你提供的原始坐标
x_tuple = (148.41213249755577, 156.62462117931182, 161.0770759875118, 169.21802106108976, 171.53578439669775, 177.31429522801588, 171.7025899944188, 165.89430263865654, 164.03709560714134, 155.85755768504498, 152.3381684145277, 144.09367135708533, 148.41213249755577)
y_tuple = (212.51320231696795, 212.9654197878803, 211.25215507829296, 211.70582096911937, 211.83498166961178, 212.15699750932652, 223.56562737602863, 223.26504232165132, 222.18842269217154, 221.7624098796552, 221.57911041509468, 221.1497143523005, 212.51320231696795)

def calc_polygon_area(xs, ys):
    sum1 = 0
    sum2 = 0
    # 最后一个点是重复的首点,遍历到倒数第二个点即可覆盖所有相邻对
    for i in range(len(xs) - 1):
        sum1 += xs[i] * ys[i+1]
        sum2 += xs[i+1] * ys[i]
    return abs(sum1 - sum2) / 2

# 针对你提供的数据,计算结果约为138.43
print(calc_polygon_area(x_tuple, y_tuple))

注意事项

  • 鞋带公式仅适用于边不交叉的简单多边形,日常标注任务里的多边形检测框基本都符合这个要求
  • 如果顶点没有沿边界按顺序排列、或者多边形存在自交边,直接套用公式会得到错误结果
  • 你之前用的轴对齐矩形面积公式,本质是鞋带公式在矩形场景下的简化特例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 07:27:22