获得两条线段的(kx+b)中的b值
float get_two_door_b_diff(cv::Vec4f line1, cv::Vec4f line2) {
float deltaY1 = line1[1] -line1[3];
float deltaX1 = line1[0] -line1[2];
float deltaY2 = line2[1] - line2[3];
float deltaX2 = line2[0] - line2[2];
float k1, k2, b1, b2;
if (deltaX1 !=0 && deltaX2!=0)
{
k1 = deltaY1 / deltaX1 ;
k2 = deltaY2 / deltaX2 ;
b1 = line1[1] - k1 * line1[0] ;
b2 = line2[1] - k1 * line2[0] ;
return abs(b2-b1) / sqrt(k1*k1+1);
} else{
if(deltaX1 == 0 && deltaX2 != 0)
{
k2 = deltaY2 / deltaX2 ;
b2 = line2[1] - k2 * line2[0];
b1 = line1[1] - k2 * line1[0];
return abs(b2-b1) / sqrt(k2*k2+1);
}
if(deltaX2 == 0 && deltaX1 != 0)
{
k1 = deltaY1 / deltaX1 ;
b1 = line1[1] - k1 * line1[0];
b2 = line2[1] - k1 * line2[0];
return abs(b2-b1) / sqrt(k1*k1+1);
}
if(deltaX2 == 0 && deltaX1 == 0)
{
return line2[0] - line1[0];
}
}
}