4

私は javacv を使用してオブジェクト検出に関するプロジェクトを行っています。長方形を検出するために使用するコード例をいくつか調べたところ、ほとんどすべてのコード例にこれらのクラス内に次のメソッドが含まれていることがわかりました。

このメソッドの意味や使い方を誰か説明してください。

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);
} 

これがそのメソッドのソースです。

4

1 に答える 1

7

ご想像のとおり、これは 2 つのベクトル (pt1, pt0) 、 (pt2, pt0) の角度のコサインを計算します。

式は次のようになります。 Cos(theta) = DotProduct(a,b) / (length(a) * length(b))

ここに画像の説明を入力

最後の部分については、1e-10おそらく長さゼロのベクトルでゼロ除算エラーを回避するためです。

于 2012-07-01T05:29:30.507 に答える