我試圖計算使用霍夫變換的光流算法的線之間的交點。但是,當我使用我的算法計算交叉點時,我沒有得到應有的點。如何計算兩條線之間的交點
我將行保存爲我創建的名爲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