image-processing - 从位置数组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 像素时需要很长时间
解决方案
推荐阅读
- javascript - TypeError:尝试在 javascript 中获取资源时出现 NetworkError
- c++ - 构造 Nef_polyhedron 时与 'ss_circle.has_on' 的断言冲突
- c# - 我什么时候应该在 ZipOutputStream (SharpZipLib) 上调用 Finish
- java - PARSER - 在 spark 中从 hdfs 加载数据时出现 Nosuchfield 错误
- dart - 是否可以在 dart 的一个函数中将对象序列化为 json
- powershell - 带有 Powershell 的 AWS Cloudwatch API
- file - 如何将子模块的文件复制到gradle中另一个模块的build.gradle
- python - 将 C++ 代码(使用 Intel 的 TBB 库)包装到 Cython 并从 Python 调用
- amazon-athena - 哈希数组列 AWS Athena
- javascript - react-animated 循环在短时间内变得非常错误,React Native,Animated.Text