如何找到一帧中物体的质心与相邻帧之间的欧氏距离

时间:2012-03-07 06:33:17

标签: c++ opencv euclidean-distance

我们正在进行车辆计数项目(使用OpenCV)。现在我们必须找到从一帧中物体的质心到相邻帧的欧几里德距离?在我们的项目中,我们已经找到了质心。

2 个答案:

答案 0 :(得分:5)

我将假设相机没有在捕捉之间移动,因此您不必担心注册。

你应该有两个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三角形)......

希望有所帮助!

答案 1 :(得分:0)

如果pq的类型为int,请务必将(diff.x*diff.x + diff.y*diff.y)字词类型转换为doublefloat。这样你就可以获得更准确的欧氏距离。