OpenCV計算點到直線的距離 數學法


我們在檢測圖像的邊緣圖時,有時需要檢測出直線目標,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         //=========================================================================================

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM