Image processing 从位置数组Python 3中查找边框
我用python在图像中寻找边界,首先我用灰度图像创建邻域,然后我必须找到连接我创建的邻域(边)的点 这是我的邻居数组的一个示例。值[x,y]表示构成邻域一部分的像素的位置 这就是我用来检测边界的功能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):
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