【问题标题】:Calculate the distance between two Centriods计算两个质心之间的距离
【发布时间】:2021-01-14 12:07:41
【问题描述】:

我正在尝试在二进制视频帧中跟踪检测到的对象。因此,我将检测到的对象(红色小车)的质心存储在出列队列中,并使用 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.

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

所以我的问题是:

我怎样才能使这项工作以这样的方式工作,以便我得到每两个连续质心之间的距离差?

【问题讨论】:

    标签: python image-processing scipy distance deque


    【解决方案1】:

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

    如果您想一次输入一个 centroids 的元素,scipy.spatial.distance 包含一个名为 euclidean 的函数,用于测量两个一维数组之间的距离。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-01
      • 2021-05-15
      • 1970-01-01
      • 2017-03-13
      • 2010-10-30
      • 1970-01-01
      相关资源
      最近更新 更多