opencv 用于分组的欧氏距离

qojgxg4l  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(131)

我想计算图像中一个点与所有其他点之间的欧氏距离,并可能对距离最小的前5-6个点进行排序,并将它们作为邻近点。我知道我必须对所有点进行递归计算,但有人尝试过吗?我有所有点的坐标,但不知道如何递归计算并对它们进行排序。拜托了我会很感激任何形式的帮助。谢谢。

e5nqia27

e5nqia271#

简单来说,就是毕达哥拉斯定理的一个应用,h = √(a2 + b2)

from math import sqrt
def func_euclid_dist(x,y,x1,y1):
    dx_sq=(x-x1)**2
    dy_sq=(y-y1)**2
    ed = sqrt(dx_sq+dy_sq)
    return ed

distances=[]
for i, (x,y) in enumerate(first_list_of_point_xy_coords):
    distances.append([])
    for j, (x1,y1) in enumerate(second_list_of_point_xy_coords):
        distances[i].append(func_euclid_dist(x,y,x1,y1))

这将产生包含从第一列表中的每个点到第二列表中的每个其他点的距离的2-d数组。
如果第一个列表只包含一个点,这不是问题。
或者,存在许多工具,其中一个选项是numpy.linalg.norm函数,如下所示:How can the Euclidean distance be calculated with NumPy?

相关问题