Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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
Python 查找面标记之间的欧氏距离_Python_Numpy_Euclidean Distance - Fatal编程技术网

Python 查找面标记之间的欧氏距离

Python 查找面标记之间的欧氏距离,python,numpy,euclidean-distance,Python,Numpy,Euclidean Distance,我有多个帧,我使用Retinaface检测到每个帧中的人脸。我想用它们的地标来追踪这些脸 为了找到两个地标之间的相似性,我尝试计算欧氏距离: 输入: landmark_1 = [1828, 911], [1887, 913], [1841, 942], [1832, 974], [1876, 976] landmark_2 = [1827, 928], [1887, 926], [1848, 963], [1836, 992], [1884, 990] euclidean_dist(landm

我有多个帧,我使用
Retinaface
检测到每个帧中的人脸。我想用它们的地标来追踪这些脸

为了找到两个地标之间的相似性,我尝试计算欧氏距离:

输入:

landmark_1 = [1828, 911], [1887, 913], [1841, 942], [1832, 974], [1876, 976]
landmark_2 = [1827, 928], [1887, 926], [1848, 963], [1836, 992], [1884, 990]
euclidean_dist(landmark_1, landmark_2)
>> 1424.9424549784458
参考其他链接后,我编写了以下函数,但生成的值非常高:

def欧几里德距离(向量x,向量y):
向量x,向量y=np.数组(向量x),np.数组(向量y)
如果len(向量_x)!=len(向量y):
引发异常('向量必须是相同的维度')
ans=和((向量_x[dim]-向量_y[dim])**2表示范围内的dim(len(向量_x)))
返回np.sqrt(np.sum(ans**2))
输出:

landmark_1 = [1828, 911], [1887, 913], [1841, 942], [1832, 974], [1876, 976]
landmark_2 = [1827, 928], [1887, 926], [1848, 963], [1836, 992], [1884, 990]
euclidean_dist(landmark_1, landmark_2)
>> 1424.9424549784458
(本例中应为较小的值)


我猜代码只能用于一维向量,但我真的被困在这里了。任何帮助都将不胜感激。

看起来你在两次摆正答案(
ans**2
)。但您也可以稍微简化函数:

def欧几里德距离(向量x,向量y):
向量x,向量y=np.数组(向量x),np.数组(向量y)
返回np.sqrt(np.sum((向量x-向量y)**2,轴=-1))
当向量是不兼容的形状时,这将自动引发异常


编辑:如果您使用
轴=-1
它将在数组的最后一个轴上求和,因此您可以使用二维向量数组。

看起来您将答案平方两次(
ans**2
)。但您也可以稍微简化函数:

def欧几里德距离(向量x,向量y):
向量x,向量y=np.数组(向量x),np.数组(向量y)
返回np.sqrt(np.sum((向量x-向量y)**2,轴=-1))
当向量是不兼容的形状时,这将自动引发异常

编辑:如果您使用
轴=-1
它将在数组的最后一个轴上求和,因此您可以使用二维向量数组。

您也可以使用

你也可以用