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

你可以猜到,这计算两个向量 (pt1, pt0) , (pt2, pt0) 的夹角的余弦

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

在此处输入图像描述

对于最后一部分1e-10,这可能是为了避免在零长度向量上除以零误差。

于 2012-07-01T05:29:30.507 回答