public static PointF[] ToTransPos(CornerPoints pos) { var p0 = new PointF((float)pos.x0, (float)pos.y0); var p1 = new PointF((float)pos.x1, (float)pos.y1); var p2 = new PointF((float)pos.x2, (float)pos.y2); return(new PointF[] { p0, p1, p2 }); }
public static Mat ToTargetPos(CornerPoints pos, Point center) { var mx = center.X; var my = center.Y; var w = Tuple.Create(pos.x1, pos.y1).L2(Tuple.Create(pos.x2, pos.y2)) / 2; var h = Tuple.Create(pos.x0, pos.y0).L2(Tuple.Create(pos.x1, pos.y1)) / 2; var lb = new PointF((float)(mx - w), (float)(my - h)); var lt = new PointF((float)(mx - w), (float)(my + h)); var rt = new PointF((float)(mx + w), (float)(my + h)); var pf = ToTransPos(pos); var pl = new PointF[] { lb, lt, rt }; var mat = CvInvoke.GetAffineTransform(pf, pl); Console.WriteLine(); return(mat); }