我试图计算使用霍夫变换的光流算法的线之间的交点。但是,当我使用我的算法计算交叉点时,我没有得到应有的点。如何计算两条线之间的交点
我将行保存为我创建的名为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;
}
该方法是否正确,或者我做错了什么?据我所知,它应该工作,因为它对于我通过硬编码完成的单个点来说,但是,在使用实际数据时,我无法获得良好的交集。
当处理实际数据时,几乎平行的线条也不太可能......但这不是真正的问题,会发生什么情况是真实线条应该相交的地方不会被返回。 (我为了调试目的而直观地显示数据 – AndrewSchade 2013-05-13 14:40:43
那么返回什么?你的输入是什么?什么是中间值? – Useless 2013-05-13 15:07:03