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         //=========================================================================================
原文地址:https://www.cnblogs.com/ggYYa/p/6038939.html