Python 找到一组坐标的边界点

Python 找到一组坐标的边界点,python,boundary,roi,Python,Boundary,Roi,我的目标是获得图像中黑色轮廓的ROI理想结果 在使用下面的凸包Graham代码之后,我们能够获得一个ROI,如凸包Graham的图像结果所示(白色覆盖)。Convex Hull Graham只返回边界边界点,但是,我们需要我们的ROI考虑一些中间点来给我们一个清晰的形状。 def convex_hull_graham(points): TURN_LEFT, TURN_RIGHT, TURN_NONE = (1, -1, 0) def cmp(a, b): #

我的目标是获得图像中黑色轮廓的ROI理想结果

在使用下面的凸包Graham代码之后,我们能够获得一个ROI,如凸包Graham的图像结果所示(白色覆盖)。Convex Hull Graham只返回边界边界点,但是,我们需要我们的ROI考虑一些中间点来给我们一个清晰的形状。
def convex_hull_graham(points):

    TURN_LEFT, TURN_RIGHT, TURN_NONE = (1, -1, 0)

    def cmp(a, b):
        # return (a > b) - (a < b)
        return np.add((a<b), (a>b), dtype=np.float32)

    def turn(p, q, r):
        return cmp((q[0] - p[0])*(r[1] - p[1]) - (r[0] - p[0])*(q[1] - p[1]), 0)
    def _keep_left(hull, r):
        while len(hull) > 1 and turn(hull[-2], hull[-1], r) != TURN_LEFT:
            hull.pop()
        if not len(hull) or hull[-1] != r:
            hull.append(r)
        return hull
    points = list(points)
    points = [list(point) for point in points]

    points = sorted(points)
    l = reduce(_keep_left, points, [])
    u = reduce(_keep_left, reversed(points), [])

    return l.extend(u[i] for i in range(1, len(u) -1)) or l
def凸面_hull_graham(点):
向左拐,向右拐,无拐=(1,-1,0)
def cmp(a、b):
#返回(a>b)-(a1并转弯(船体[-2],船体[-1],r)!=左转:
hull.pop()
如果不是len(外壳)或外壳[-1]!=r:
附加外壳(r)
返回船体
点=列表(点)
点=[点中点的列表(点)]
点=已排序(点)
l=reduce(_keep_left,points,[]))
u=减少(_保持_向左,反向(点),[]))
返回l.extend(范围(1,len(u)-1)中的i的u[i]或l
我们尝试了几种方法,包括Shapely、最近邻、KDTree,但都没有成功。附件是图像中的点。

这是点(.npy文件)的链接

回答你的问题了吗?我也试过了。但我无法正确地画出边缘