点到直线的距离opencv实现

 数学几何代数中有点到直线的公式:
点P(x0,y0)到直线Ax+By+C=0的距离:
(当然也可直接用向量法求出余弦角,再用正弦求得距离)

//p.s. 直线公式用两点式转换成一般式
 //param p1:线外的点
 //param lp1: 线的起点
 //param lp2: 线的终点
 //return 距离
#include "math.h"
function point2Line(p1, lp1, lp2)
{
    double a, b, c,dis;
    // 化简两点式为一般式
    // 两点式公式为(y - y1)/(x - x1) = (y2 - y1)/ (x2 - x1)
    // 化简为一般式为(y2 - y1)x + (x1 - x2)y + (x2y1 - x1y2) = 0
    // A = y2 - y1
    // B = x1 - x2
    // C = x2y1 - x1y2
    a = lp2.y - lp1.y;
    b = lp1.x - lp2.x;
    c = lp2.x * lp1.y - lp1.x * lp2.y;
    // 距离公式为d = |A*x0 + B*y0 + C|/√(A^2 + B^2)
     dis = abs(a * p1.x + b * p1.y + c) / sqrt(a * a + b * b);
    return d;
};

你可能感兴趣的:(点到直线的距离opencv实现)