我們在檢測圖像的邊緣圖時,有時需要檢測出直線目標,hough變換檢測出直線后怎么能更進一步的縮小區域呢?其中,可以根據距離來再做一判斷,就涉及到了點與直線的距離問題。
點到直線距離代碼如下:
1 //=================================排除干擾直線============================================ 2 // 根據中心點與直線的距離 排除干擾直線 3 // 點(x0,y0)到直線Ax+By+C=0的距離為d = (A*x0+B*y0+C)/sqrt(A^2+B^2) 4 double A, B, C,dis; 5 // 化簡兩點式為一般式 6 // 兩點式公式為(y - y1)/(x - x1) = (y2 - y1)/ (x2 - x1) 7 // 化簡為一般式為(y2 - y1)x + (x1 - x2)y + (x2y1 - x1y2) = 0 8 // A = y2 - y1 9 // B = x1 - x2 10 // C = x2y1 - x1y2 11 A = pt2.y - pt1.y; 12 B = pt1.x - pt2.x; 13 C = pt2.x * pt1.y - pt1.x * pt2.y; 14 //中心點坐標(coreX,coreY) 15 double coreX,coreY; 16 coreX = RIO.cols/2; 17 coreY = RIO.rows/2; 18 // 距離公式為d = |A*x0 + B*y0 + C|/√(A^2 + B^2) 19 dis = abs(A * coreX + B * coreY + C) / sqrt(A * A + B * B); 20 //=========================================================================================