Я пытаюсь сшить большое количество изображений с хорошим перекрытием, например: ExampleImage1 и ExampleImage2 .
Во-первых, я хочу 1D линиютравяного пятна.Примерно так: Результат .Это скриншот оригинального результата, оригинальная картинка больше 2МБ.Следовательно, не может загрузить его.Это было достигнуто путем разбиения 300 изображений на небольшие наборы и сшивания их.Как и в этом примере, но в большем масштабе с большим количеством иерархических изображений - 0.jpg, 1.jpg, 2.jpg изображения в stitch1.jpg, 2,3,4 в stitch2.jpg, а затем сшивание stitch1.jpg и stitch2.jpg вместе
Теперь я хочу получить тот же результат, сшивая изображения вроде: 0.jpg + 1.jpg = result.jpg, result.jpg + 2.jpg = result.jpg ..... и так далее.
Я использую концепцию области интересов, чтобы удостовериться, что перекрывающаяся область все время превышает 20%. Код выглядит следующим образом.Код - это тело цикла for.Это объясняет только основную часть алгоритма, а не точный код.
После запуска я получаю артефакт, такой как: Result2 .Это похоже на то, что постобработка конвейера сшивания не наблюдается на всем изображении из-за используемой концепции области интереса.
Может кто-нибудь сказать мне, как решить эту проблему?
Также есть ли способ увидеть обнаруженные функции в конвейере сшивания opencv?
for (int j = 4; j < 100; j = j + 1) {
image2 = imread("result.jpg"); // result of stitching 0.jpg, 1.jpg,2.jpg and 3.jpg
image1 = imread(j + ".jpg");
Rect rect2 = new Rect(0,0, (int)(image1.cols()*0.5),image2.rows());
Rect rect1 = new Rect(0,0,(int)(image1.cols()*0.5),image1.rows());
imgs.resize(imgs.size() + 1);
imgs.put(imgs.size() - 1, image2);
Roi.push_back(new RectVector(rect2));
imgs.resize(imgs.size() + 1);
imgs.put(imgs.size() - 1, image1);
Roi.push_back(new RectVector(rect1));
int status = stitcher.stitch(imgs, Roi, pano);
}