Проблема OpenCV WarpPerspective

В настоящее время я пытаюсь реализовать базовый код сшивания изображений C++ (OpenCV) в Eclipse. Часть обнаружения функций показывает отличные результаты для функций SURF. Однако, когда я пытаюсь деформировать 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);

Я совсем новичок в этом и просто пытаюсь собрать кусочки вместе. Поэтому я извиняюсь, если есть какая-то основная ошибка.


person hriddle    schedule 04.02.2013    source источник
comment
Обнаружение функций: i.stack.imgur.com/7UjVJ.jpg Вывод: i.stack.imgur.com/Fe392.jpg   -  person hriddle    schedule 04.02.2013


Ответы (2)


Если вы только пытаетесь собрать части вместе, вы можете попробовать встроенный класс сшивателя изображений OpenCV: http://docs.opencv.org/modules/stitching/doc/high_level.html#stitcher

person b_m    schedule 04.02.2013
comment
Спасибо за ссылку. На самом деле я имел в виду, что хочу собрать части кода вместе, изучив основные шаги. Я просто хочу понять, что происходит не так, чтобы исправить это. - person hriddle; 07.02.2013

Я нашел связанный вопрос здесь Сшивание 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);
person hriddle    schedule 18.02.2013