0

我在 Opencv 中有一个带有凸面缺陷的轮廓(红色的那个),我想将该轮廓分成两部分,水平穿过该点,有没有办法做到这一点,所以我只是将轮廓标记为黄色? 描述问题的图片

在此处输入图像描述

4

1 回答 1

0

这是一个有趣的问题。根据凹点在图像中的分布情况,有一些解决方案。

1)如果这些点没有出现在轮廓的底部(如您的简单示例)。然后这里是一个伪代码。

  1. 找到图像I的凸包C。
  2. C中减去I,这将为您提供凹面区域(例如示例中两个白色三角形之间的黑色三角形)。
  3. 该区域中y值最小的点为您提供了要切割的水平线。

2)如果这样的点可以出现在任何地方,您需要一种更智能的算法,该算法具有不受仅水平约束的切割线(因为该差异的 min-y 点将是图像的 min-y )。您可以找到“最里面”的角点,并将它们相互连接。您可以在 y-,x+,y+,x- 方向上递归地切割余数。这实际上取决于您输入的规格。

于 2017-01-11T21:53:49.973 回答