Opencv将轮廓分为两部分

时间:2016-03-15 13:29:29

标签: opencv contour convexity-defects

我在Opencv中有一个凸起缺陷的轮廓(红色的那个)我希望将这个轮廓切成两部分,水平遍历那个点,无论如何要做到这一点,所以我只是得到标记的轮廓黄色? Image describing the problem

enter image description here

1 个答案:

答案 0 :(得分:0)

这是一个有趣的问题。有一些解决方案基于如何在图像中分布凹度点。

1)如果在轮廓的底部没有出现这样的点(就像你的简单例子那样)。然后这是一个伪代码。

  1. 查找图像 I 的凸包 C
  2. C 中减去 I ,它会为您提供凹陷区域(例如示例中两个白色三角形之间的黑色三角形)。
  3. 该区域中具有最小 y 值的点为您提供了要切割的水平线。
  4. 2)如果这些点可以在任何地方出现,你需要一个更智能的算法,它具有不仅仅是水平约束的切割线(因为该差异的min-y点将是图像的min-y) 。你可以找到最里面的"角点,并将它们相互连接。您可以递归地剪切y-,x +,y +,x-方向上的余数。这实际上取决于您输入的规格。