我正在尝试使用霍夫变换计算光流算法的线之间的交点。但是,当我使用我的算法计算交叉点时,我没有得到我应该得到的分数。
我将 Lines 保存为我创建的名为ImageLine
. 这是我的交集方法的代码。
Point ImageLine::intersectionWith(ImageLine other)
{
float A2 = other.Y2() - other.Y1();
float B2 = other.X2() - other.X1();
float C2 = A2*other.X1() + B2*other.Y1();
float A1 = y2 - y1;
float B1 = x2 - x1;
float C1 = A1 * x1 + B1 * y1;
float det = A1*B2 - A2*B1;
if (det == 0)
{
return Point(-1,-1);
}
Point d = Point((B2 * C1 - B1 * C2) / det, -(A1 * C2 - A2 * C1) / det);
return d;
}
这种方法是正确的,还是我做错了什么?据我所知,它应该可以工作,就像我硬编码的单个点一样,但是,在使用真实数据时,我无法获得良好的交集。