计算两个中心点之间的距离

问题描述

我正在尝试在二进制视频帧中跟踪检测到的对象。因此,我将检测到的物体(红色小汽车)的质心存储在出队中,并使用scypi空间距离使用以下代码计算两个连续质心之间的距离:

import scipy.spatial.distance
from collections import  deque

#defining the Centroid
centroids=deque(maxlen=40)
.
.
.
centroids.appendleft(center)
#center comes from detection process. e.g centroids=[(120,130),(125,132),...

distance=scipy.spatial.distance.cdist(center[0],center[1)]
print('distance ",distance)

运行代码时,出现以下错误

 raise ValueError('XA must be a 2-dimensional array.')
 ValueError: XA must be a 2-dimensional array.

错误是逻辑上的,因为存储的质心是汽车中心的点向量

所以我的问题是:

如何以这种方式进行这项工作,以便获得每两个连续的质心之间的距离差?

解决方法

scipy.spatial.distance.cdist()需要两个二维数组作为输入,但是通过提供center[0]center[1],您将为其提供两个1维数组。

如果您想一次馈送centroids的元素,则scipy.spatial.distance包含一个称为euclidean的函数,该函数可测量两个一维数组之间的距离。

要以这种方式获取每对连续质心之间的距离,您可以像这样循环遍历所有质心:

distances = []
for i in range(len(centroids) - 1):
    distances.append(euclidean(centroids[i],centroids[i+1]))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...