Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 从位置数组Python 3中查找边框_Image Processing_Opencv3.0_Python 3.8_Edges_Neighbours - Fatal编程技术网

Image processing 从位置数组Python 3中查找边框

Image processing 从位置数组Python 3中查找边框,image-processing,opencv3.0,python-3.8,edges,neighbours,Image Processing,Opencv3.0,Python 3.8,Edges,Neighbours,我用python在图像中寻找边界,首先我用灰度图像创建邻域,然后我必须找到连接我创建的邻域(边)的点 这是我的邻居数组的一个示例。值[x,y]表示构成邻域一部分的像素的位置 这就是我用来检测边界的功能 def getPoints(vecinos, img): print('puntos') length = len(vecinos) bol = np.zeros(img.shape,img.dtype) for i in range(length):

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

这是我的邻居数组的一个示例。值[x,y]表示构成邻域一部分的像素的位置

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

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数组的示例

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

也许一个图表可以帮助显示“位置阵列”和“邻里”的样子。。。另一个显示了预期的“答案”是什么样子的。嘿,我添加了这个图表,这样你也可以更好地理解我。我添加了一些链接到我正在寻找的预期答案数组
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