计算多边形的最小面积矩形

我需要计算多边形周围的最小区域矩形( 最小可能的矩形 )。

我唯一的输入是多边形中的点数。

我也有积分的坐标。

将旋转卡尺算法用于凸多边形,否则使用凸包。 您当然需要多边形中点的坐标,而不仅仅是点的数量。

这称为最小边界框 ,它是OCR包中使用的最基本算法。 您可以使用OpenCV包中的Rotating Calipers找到实现。 获得源代码后,请查看此文件,

cv/src/cvrotcalipers.cpp 

您需要的方法是cvMinAreaRect2()

首先进行格拉姆扫描并获得该组点的凸包 。 然后你可以使用这里讨论的最小矩形

请遵循以下算法

  1. 将多边形旋转到XY平面上
  2. 选取1条边并将此边与X轴对齐(使用arctan)。 使用min / max x,y查找边界矩形。 计算区域并存储在列表中
  3. 对剪切多边形中的剩余边缘执行相同操作。
  4. 选择具有最小面积的矩形。
  5. 旋转边界矩形背面,用于步骤1和步骤2的共面反向旋转

有关详细信息,请检查链接Minimum-Area-Rectangle

显然,你需要点的坐标才能得到答案。 如果矩形与X和Y aces对齐,那么解决方案是微不足道的。 如果你想要任何角度的最小矩形,那么你需要做一些优化过程。