2024-10-01 02:40:21 发布
网友
我有一个numpy数组中的下图
我想
将块分离为单独的等高线或任何坐标表示
然后我想把任何凹多边形转换成多个凸多边形
像这样
到目前为止,我已经设法用opencv将每个块隔离成等高线。。。但是有没有一种简单的方法可以将L形对象分割成两个或更多的正方形块呢。如果需要,每个形状的新轮廓可以重叠
也可能是这样,我有一个这样的图像,没有这样的直线
我用cv2.approxPolyDP来画这个形状,但是它们是凹的,我需要它们分开
cv2.approxPolyDP
谢谢你的帮助
好的,谢谢拉胡尔的回答
我最终找到了一个软件包,帮助我转换多边形,解决了我的问题
下载时附带:
pip install sect
然后:
from sect.triangulation import constrained_delaunay_triangles
以openCV生成的等高线为例,如下所示
然后“平滑”颜色,以减少颜色。我用过这个
epsilon = 0.005 * cv2.arcLength(contour, True) approx = cv2.approxPolyDP(contour, epsilon, True)
然后在门派中运行它
constrained_delaunay_triangles([tuple(x) for x in approx.squeeze()])
输出将多边形拆分为三角形,完全删除所有凹多边形
我能想到的一种方法是,对于每个轮廓,首先找到它的凸包
现在找到轮廓与其凸包之间的缺陷点See this link
现在使用缺陷距离数据,找到距离最大的点。该点是两个对象以L形连接的点。现在从该点开始,在该点绘制一条与轮廓切线垂直的直线,然后再次查找轮廓。生成的轮廓将是L形的两个轮廓
注意:在这种方法中,一个对象的某些部分可能在边界处分割时进入另一个对象
好的,谢谢拉胡尔的回答
我最终找到了一个软件包,帮助我转换多边形,解决了我的问题
下载时附带:
然后:
以openCV生成的等高线为例,如下所示
然后“平滑”颜色,以减少颜色。我用过这个
然后在门派中运行它
输出将多边形拆分为三角形,完全删除所有凹多边形
我能想到的一种方法是,对于每个轮廓,首先找到它的凸包
现在找到轮廓与其凸包之间的缺陷点See this link
现在使用缺陷距离数据,找到距离最大的点。该点是两个对象以L形连接的点。现在从该点开始,在该点绘制一条与轮廓切线垂直的直线,然后再次查找轮廓。生成的轮廓将是L形的两个轮廓
注意:在这种方法中,一个对象的某些部分可能在边界处分割时进入另一个对象
相关问题 更多 >
编程相关推荐