我们正在做一个车辆计数项目(使用 OpenCV)。现在我们必须找到从一帧中物体的质心到相邻帧的欧几里得距离?在我们的项目中,我们已经完成了寻找质心的工作。
问问题
3667 次
2 回答
5
我将假设相机在两次拍摄之间没有移动,因此您不必担心注册。
您应该有两个cv::Point
对象代表两个获取的质心。欧几里得距离可以计算如下:
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 三角形)...
希望有帮助!
于 2012-03-07T14:24:14.453 回答
0
如果p
和q
属于 类型int
,请确保将(diff.x*diff.x + diff.y*diff.y)
术语类型转换为double
或float
。这样,您可以获得更准确的欧几里德距离。
于 2013-12-02T18:17:37.653 回答