我正在使用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);
}
This是该方法的来源。
答案 0 :(得分:7)
你可以猜到这可以计算出两个向量角度的余弦值(pt1,pt0),(pt2,pt0)
公式如下:
Cos(theta) = DotProduct(a,b) / (length(a) * length(b))
对于最后一部分1e-10
,这可能是为了避免零长度向量上的零除错误。