В настоящее время я пытаюсь реализовать базовый код C ++ (OpenCV) для сшивания изображений в Eclipse. Часть обнаружения функций показывает отличные результаты для SURF Features. Однако, когда я пытаюсь деформировать 2 изображения вместе, я получаю только половину изображения в качестве вывода. Я пытался найти решение везде, но безрезультатно. Я даже пытался сместить матрицу гомографии, как в этом ответе OpenCV warpperspective . Пока ничего не помогло.
Я прикреплю выходные изображения в комментариях, так как у меня недостаточно очков репутации.
Для определения характеристик и гомографии, я использовал точный код отсюда
http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html
И затем я добавил следующий фрагмент кода после данного кода,
Mat result;
warpPerspective(img_object,result,H, Size(2*img_object.cols,img_object.rows));
Mat half(result,Rect(0,0,img_scene.cols,img_scene.rows));
img_scene.copyTo(half);
imshow( "Warped Image", result);
Я довольно новичок в этом и просто пытаюсь собрать все воедино. Поэтому я прошу прощения, если есть какая-то основная ошибка.
Если вы только пытаетесь собрать кусочки вместе, попробуйте встроенный класс сшивания изображений OpenCV: http://docs.opencv.org/modules/stitching/doc/high_level.html#stitcher
Я нашел связанный вопрос здесь Сшивание 2 изображений в opencv и реализовал дополнительный код, данный. Это сработало!
Для справки, отредактированный код, который я написал, был
Mat result;
warpPerspective(img_scene, result, H, Size(img_scene.cols*2, img_scene.rows*2), INTER_CUBIC);
Mat final(Size(img_scene.cols + img_object.cols, img_scene.rows*2),CV_8UC3);
Mat roi1(final, Rect(0, 0, img_object.cols, img_object.rows));
Mat roi2(final, Rect(0, 0, result.cols, result.rows));
result.copyTo(roi2);
img_object.copyTo(roi1);