2012-07-01 26 views
4

我在使用javacv進行對象檢測的項目中,我經歷了幾個用於檢測矩形的代碼示例,並且我發現所有大多數代碼示例都包含這些類中的以下方法。opencv中以下方法的含義是什麼?

請解釋一下這個方法的含義或用法。

double angle(CvPoint* pt1, CvPoint* pt2, CvPoint* pt0) 
{ 
    double dx1 = pt1->x - pt0->x; 
    double dy1 = pt1->y - pt0->y; 
    double dx2 = pt2->x - pt0->x; 
    double dy2 = pt2->y - pt0->y; 
    return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10); 
} 

This是該方法的來源。

回答

7

正如你可以猜測此計算兩個矢量(PT1,PT0)的角度的餘弦(PT2,PT0)

的公式是這樣的: Cos(theta) = DotProduct(a,b)/(length(a) * length(b))

enter image description here

對於最後一部分1e-10,這可能是爲了避免在零長度向量上除以零誤差。

相關問題