Если я правильно понимаю ваш вопрос, вы хотите иметь несколько точек ввода, которые вы выбираете, и вы хотите деформировать это изображение, чтобы разместить его в нужных точках. Если это так, вы можете использовать приведенный ниже код в качестве шаблона.
//Get the input image
Mat img = CvInvoke.Imread("img.png", ImreadModes.AnyColor);
//Declare an image that will hold the output
Mat output = new Mat(img.Width, img.Height);
//Get two points on the input image
Point point = new Point(0, 0);
Point point2 = new Point(100, 0);
Point point3 = new Point(0, 100);
Point point4 = new Point(100, 100);
//Store the points in a list
PointF[] srcPoints = new PointF[] { point, point2, point3, point4 };
//Declare where you want the image to end up
Point point5 = new Point(50, 0);
Point point6 = new Point(150, 0);
Point point7 = new Point(50, 100);
Point point8 = new Point(150, 100);
//Store those points in the list
PointF[] dstPoints = new PointF[] { point5, point6, point7, point8 };
//Calculate the homography matrix
Mat matrix = CvInvoke.FindHomography(srcPoints, dstPoints, RobustEstimationAlgorithm.AllPoints);
//Warp the image
CvInvoke.WarpPerspective(img, output, matrix, new Size(output.Width, output.Height), Inter.Area, Warp.Default);
Здесь вы просто читаете изображение, которое хотите использовать, объявляете начальную и конечную точки, а затем просто передаете эти переменные в две функции. сделать все расчеты за вас. Конечно, вам придется изменить некоторые значения, чтобы они соответствовали вашим конкретным c обстоятельствам, но именно так я решал подобные проблемы в прошлом.
Я надеюсь, что это то, что вы искали, и дайте мне знать, если у вас есть какие-либо вопросы.