Кроме того, есть ли способ увидеть обнаруженные функции в конвейере сшивания opencv?
аюсь сшить большое количество изображений с хорошим перекрытием, например: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. Это объясняет только основную часть алгоритма, а не точный код.
После запуска я получаю артефакт, такой как:Результат2, Это похоже на то, что постобработка конвейера сшивания не наблюдается на всем изображении из-за используемой концепции области интереса.
Может кто-нибудь сказать мне, как решить эту проблему?
Кроме того, есть ли способ увидеть обнаруженные функции в конвейере сшивания 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);
}