Python中2D凸包的周长

时间:2018-09-19 10:31:39

标签: python convex-hull

如何在Python中计算凸包的周长?我知道SciPy具有凸包的area参数;但是,我需要perimeter

1 个答案:

答案 0 :(得分:2)

您可以遍历凸包的点并计算连续点之间的距离:

import numpy as np
from scipy.spatial.qhull import ConvexHull
from scipy.spatial.distance import euclidean

points = np.random.rand(30, 2)
hull = ConvexHull(points)

vertices = hull.vertices.tolist() + [hull.vertices[0]]
perimeter = np.sum([euclidean(x, y) for x, y in zip(points[vertices], points[vertices][1:])])
print(perimeter)

输出

3.11

注意:您还需要添加该对(最后一个,第一个)

更新

或者,假设数据为2D,则可以使用hull.area。也就是说,上述方法返回的值等于area属性的值。如果您想要真实的区域,则需要查询hull.volume

进一步

  1. What is area in scipy convex hull