Проблема сделать гомографию обнаруженного документа - PullRequest
0 голосов
/ 23 ноября 2018

Я разрабатываю приложение для обнаружения документов, переданных под веб-камерой.Я использую 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);
...