Ошибка бесшовного клона OpenCV: vector :: _ M_fill_insert - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть два изображения источника и фона, и я использую бесшовный клон opencv, чтобы смешать часть исходного изображения с фоновым изображением с помощью альфа-маски. Я удалил альфа-канал в источнике и фоне и преобразовал маску в оттенки серого ( только белый и черный). Однако функция бесшовного клонирования выдает ошибку, как показано ниже.

E / org.opencv.photo: photo :: seamlessClone_10 () перехватил std :: исключение: vector :: _ M_fill_insert

Я преобразовал все растровые изображения в mat, используя функцию opencv 'mattopbitmap' в java. Оба источника и фон имеют размер 513 * 513, а маска - 200 * 200 (с использованием opencv 3.4.1 в Android)

      Imgproc.resize(mskmat, mskmat, new Size(200, 200));
      Imgproc.resize(bgmat, bgmat, new Size(513, 513));
      Imgproc.resize(imat, imat, new Size(513, 513));
      Imgproc.cvtColor(bgmat, bgmat, Imgproc.COLOR_BGRA2BGR);
      Imgproc.cvtColor(imat, imat, Imgproc.COLOR_BGRA2BGR);
      Imgproc.cvtColor(mskmat, mskmat, Imgproc.COLOR_BGRA2GRAY);
      Mat result = new Mat();
      Photo.seamlessClone(imat, bgmat, mskmat, new org.opencv.core.Point(257, 257), result, Photo.NORMAL_CLONE);
...