Я разрабатываю приложение для обнаружения документов, переданных под веб-камерой.Я использую Emgu.CV, расширение opencv.
Мой обнаруженный документ
Я хочу сделать гомографию обнаруженного документа в идеальном прямоугольнике.Я не понимаю, как это сделать, кто-нибудь может мне помочь?
"majorContour" - это четырехсторонний контур, обнаруженный методом окPolyDp.
Вот мой код:
Rectangle rectangle = CvInvoke.BoundingRectangle(largestContour);
// Order coordinate (top-left - top-right - bottom-right - bottom-left)
var ptsList = largestContour.ToArray().ToList().OrderBy(a => a.Y).ThenBy(a => a.X).ToArray();
var elementAt1 = ptsList[1];
var elementAt3 = ptsList[3];
ptsList[1] = elementAt3;
ptsList[3] = elementAt1;
Point[] dstPoints = new[]
{
new Point(0, 0),
new Point(rectangle.Width, 0),
new Point(rectangle.Width, rectangle.Height),
new Point(0, rectangle.Height)
};
// Coordinates of the future image
Mat homographie = new Mat();
Mat final = new Mat();
CvInvoke.FindHomography(new VectorOfPoint(ptsList), new VectorOfPoint(dstPoints), homographie);
CvInvoke.WarpPerspective(largestContour, final, homographie, rectangle.Size);
CvInvoke.Imshow("Output", final);