如何使用 python 中的库三角形进行三角剖分

How to use triangulate from the library triangle in python

我想检测我的点集的边界。我从 scipy 空间尝试了 Delaunay 三角剖分,但我得到了这个:

当我从这些三角形执行 alpha 形状时,我无法获得点集的边界。所以我认为我应该使用受约束的 Delaunay 三角剖分。我选择三角形库来执行此操作。但麻烦的是,我不知道该向函数 triangle.triangulate(tri, opts='') 提供什么。我将我更改的所有点集都输入到字典中,但它 returns 我的点集。所以任何人都可以帮助我使用此功能或其他替代方法来执行轮廓检测吗?谢谢

我使用了另一个库:shapely。 以下是如何使用它对凹面对象进行三角剖分:

from shapely.geometry import MultiPoint
from shapely.ops import triangulate
points=MultiPoint(data)
triangles = triangulate(points)

我不知道三角形库,但你可以使用替代方法来执行此操作。

这是一个普遍存在的问题,你可以得到一个简单的代码来解决这个问题。 这个问题,在算法中,也被称为凸包,在scipy中有一个class。

代码如下,附有注释。

#imports
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt

## Init graphics
axis = plt.gca(); axis.cla();

#Get points sample
points = np.random.rand(20, 2)

#get Convex hull instance for the points set
hull = ConvexHull(points)

#plor the points
plt.plot(points[:,0], points[:,1], 'v')

#Get and plot the boundary
for simplex in hull.simplices:
    axis.plot(points[simplex, 0], points[simplex, 1], 'r-')

结果图很快就可以看到了:

REF: