【问题标题】:How to find the euclidian distance between the centroid of an object in one frame and the adjacent frame如何找到一帧中对象的质心与相邻帧之间的欧几里得距离
【发布时间】:2012-03-24 16:58:58
【问题描述】:

我们正在做一个车辆计数项目(使用 OpenCV)。现在我们必须找出一帧中物体的质心到相邻帧的欧几里得距离?在我们的项目中,我们已经完成了寻找质心的工作。

【问题讨论】:

  • 我认为您指定的信息太少。请添加更多信息
  • 如果你已经存储了第一帧的质心值,然后找到第二帧的质心,你可以计算欧几里得距离。但是您发布的信息有限,所以不能更多。

标签: c++ opencv euclidean-distance


【解决方案1】:

我将假设相机在两次拍摄之间没有移动,因此您不必担心注册问题。

您应该有两个 cv::Point 对象代表两个获取的质心。 Euclidean distance可以计算如下:

double euclideanDist(Point p, Point q)
{
    Point diff = p - q;
    return cv::sqrt(diff.x*diff.x + diff.y*diff.y);
}

int main(int /*argc*/, char** /*argv*/)
{
    Point centroid1(0.0, 0.0);
    Point centroid2(3.0, 4.0);

    cout << euclideanDist(centroid1, centroid2) << endl;

    return 0;
}

这输出 5(即 3-4-5 三角形)...

希望有帮助!

【讨论】:

    【解决方案2】:

    如果pq 的类型为int,请确保将(diff.x*diff.x + diff.y*diff.y) 术语类型转换为doublefloat。这样可以得到更准确的欧式距离。

    【讨论】:

      猜你喜欢
      • 2021-01-23
      • 1970-01-01
      • 2020-06-19
      • 2020-11-11
      • 2011-01-29
      • 2019-07-10
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多