首页 > 解决方案 > Open CV Contours - 将凹多边形拆分为多个凸多边形

问题描述

我在一个 numpy 数组中有下面的图像

在此处输入图像描述

我想要

  1. 将块分成单独的轮廓或任何坐标表示。

  2. 然后我想将任何凹多边形转换为多个凸多边形。

像这样

在此处输入图像描述

到目前为止,我已经设法用 opencv 将每个块隔离成轮廓......但是有没有一种简单的方法可以将 L 形对象分成两个或多个方形块。如果需要,每个形状的新轮廓可以重叠。

也可能是我有这样的图像,它没有这样的直线。

在此处输入图像描述

我曾经cv2.approxPolyDP画过形状,但它们又是凹的,我需要将它们分开。

任何帮助表示赞赏。

标签: pythonopencvcomputer-visioncontourconvex-polygon

解决方案


我能想到的一种方法是,对于每个轮廓,首先找到它的凸包。看到这个链接

现在找到轮廓与其凸包之间的缺陷点。看到这个链接

现在使用缺陷距离的数据,找到距离最大的点。该点将是 2 个对象以 L 形连接的点。现在从这一点开始,在该点画一条与轮廓相切的垂直线,然后再次找到轮廓。生成的轮廓将是 L 形的 2 个轮廓。

注意:在这种方法中,一个对象的某些部分可能会进入另一个对象,同时在边界处划分它们。


推荐阅读