我们正在进行车辆计数项目(使用OpenCV)。现在我们必须找到从一帧中物体的质心到相邻帧的欧几里德距离?在我们的项目中,我们已经找到了质心。
答案 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)
如果p
和q
的类型为int
,请务必将(diff.x*diff.x + diff.y*diff.y)
字词类型转换为double
或float
。这样你就可以获得更准确的欧氏距离。