Невозможно добиться сшивания изображения с помощью OpenCV и Emgu - PullRequest
0 голосов
/ 28 марта 2019

Я использую обертку Emgu поверх Open CV, чтобы прошивать плоские (режим сканирования) изображения, так как я кодирую в c #.Эти изображения являются снимками экрана моего окна Chrome и т. Д., Где я прокрутил страницу вниз и сделал несколько снимков экрана.Я прошел через различные вопросы, уже размещенные на Stackoverflow.Ниже приведен мой код, и я не могу получить желаемый результат из-за нескольких повторяющихся исключений.

Мой код:

    private string StitchFirstNImages(List<Mat> matList, string result_name)
    {
        using (Stitcher stitcher = new Stitcher(Stitcher.Mode.Scans, true))
        using (AKAZEFeaturesFinder finder = new AKAZEFeaturesFinder())
        {
            stitcher.SetFeaturesFinder(finder);
            stitcher.WaveCorrection = false;
            stitcher.SetWarper(new PlaneWarper(1));
            using (VectorOfMat vm = new VectorOfMat())
            {
                Mat result = new Mat();
                for (int i = 0; i < matList.Count; i++)
                {
                    vm.Push(matList[i]);
                }

                Console.WriteLine("Started Stitching = "+ matList[0].ToString());
                Stitcher.Status status = stitcher.Stitch(vm, result);

                if (status != Stitcher.Status.Ok)
                {
                    Console.WriteLine("Can't stitch images, error code = " + status);
                    return String.Empty;
                }

                Emgu.CV.CvInvoke.Imwrite(result_name, result);
                Console.WriteLine("stitching completed successfully\n" + result_name + " saved!");
                return result_name;
            }
        }
    }

В нескольких статьях stackoverflow предлагалось отключить WaveCorrection, ноэто не помогло мне.Я пытаюсь предоставить здесь набор из 63 изображений (мой набор может даже содержать сотни изображений) и сшивать их все за один раз.Я не делаю попарно шить.Мой набор содержит только png изображений .

Используемый набор изображений: https://ankurqa.mangopulse.com/sf/MzYyNF8xMTIyMjg2

С учетом следующих исключений:

System.AccessViolationException
HResult = 0x80004003
Сообщение = Попытка чтения или записи в защищенную память.Это часто указывает на то, что другая память повреждена.
Источник = Невозможно оценить источник исключения
StackTrace: Невозможно оценить трассировку стека исключений

Невозможно выделить хххххх байты

ERR_NEED_MORE_IMGS

Я новичок в вышивке, и приведенный выше код написан с помощью нескольких статей.

Может кто-нибудь предложить, если я делаю это правильно?Пожалуйста, дайте мне знать, если мне нужно изменить поиск объектов?(Я попробовал OrbFeaturesFinder, но опять-таки получал 1-е исключение, указанное выше)

Я прошел через несколько вопросов о стекаповороте и попытался настроить свой код, но пока не дал положительных результатов.

...