首页 > 解决方案 > 从位置数组Python 3中查找边界

问题描述

我正在使用 python 在图像中查找边界,首先我使用灰度图像创建邻域,然后我必须找到连接我创建的邻域的点(边缘)。

这是我的社区数组的一个示例。值 [x,y] 表示构成邻域一部分的像素的位置。这是邻域(vecinos)数组的示意图

[ [ [0,0], [0,1],[0,2] ], [ [1,0], [1,1],[1,2] ] ]

以 txt 形式指向完整邻域数组的 google 驱动器链接

这是我用来检测边界的功能

def getPoints(vecinos, img):
    print('puntos')
    length = len(vecinos)
    bol = np.zeros(img.shape,img.dtype)
    for i in range(length):
        for j in range(length):
            if not i == j:
                for val2 in vecinos[i]:
                    for val1 in vecinos[j]:
                        res1 = abs(val1[0] -  val2[0])
                        res2 = abs(val1[1] - val2[1])
                        if( (res1 == 0 or res1 == 1) and (res2 == 1 or res2 == 0) ):
                            print('borde')
                            bol[ val1[0],val1[1] ] = 1
                            bol[ val2[0],val2[1] ] = 1
    return bol

此函数的结果返回一个具有相同高度和宽度的数组,其中 1 被标识为边框,其余为 0。这是生成的 numpy 数组的示例。这是我加载到我的谷歌驱动器的结果的 txt

此函数返回一个包含 0 和 1 的数组,其中 1 是检测到的边界。我想让它更快,它工作正常但是当图像大于 100 像素时需要很长时间

标签: image-processingopencv3.0python-3.8edgesneighbours

解决方案


推荐阅读