2012-03-07 12 views
3

我們正在做一個車輛計數的項目(使用OpenCV)。現在我們必須找到一個幀中物體質心到相鄰幀的歐氏距離?在我們的項目中,我們已經完成了找到質心。如何找到一幀中物體的質心和相鄰幀之間的歐幾里得距離

+1

我想你已經指定了太少的信息。請添加更多信息 – 2012-03-07 06:42:00

+0

如果已存儲第一幀的質心值,然後找到第二幀的質心,則可以計算歐幾里德距離。但是你已經發布了有限的信息,所以不能多。 – 2012-03-07 07:12:27

回答

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)...

希望幫助!

0

如果pqint類型的,請務必將(diff.x*diff.x + diff.y*diff.y)項強制轉換爲任何doublefloat。這樣你就可以得到更準確的歐式距離。

相關問題