转自 http://blog.youkuaiyun.com/yangtrees/article/details/7965983
struct Line
{
CvPoint p1,p2;
double a,b,c;
};
void GetLinePara(Line &l)
{
l.a=l.p1.y-l.p2.y;
l.b=l.p2.x-l.p1.x;
l.c=l.p1.x*l.p2.y-l.p1.y*l.p2.x;
}
CvPoint getCrossPoint(Line &l1,Line &l2)
{
GetLinePara(l1);
GetLinePara(l2);
double D=l1.a*l2.b-l2.a*l1.b;
CvPoint p;
p.x=(l1.b*l2.c-l2.b*l1.c)/D;
p.y=(l1.c*l2.a-l2.c*l1.a)/D;
return p;
}