Я пытаюсь сшить третье изображение после сшивания двух изображений вместе, но, похоже, это не работает.
Чтобы уточнить, я успешно соединил два изображения вместе, используя код, приведенный в документации opencv (http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html) и получил это изображение.
http://i.stack.imgur.com/gqQjV.jpg
Затем, после большого чтения и проблем с ROI, я удалил черные части изображения, чтобы получить это изображение.
Сейчас пытаюсь прошить третье изображение (http://i.stack.imgur.com/nXD86.jpg) к этому, используя тот же код, но шить не работает. Функция соответствия работает отлично.
Но после выполнения программы я получаю то же изображение с большей черной областью (из-за ROI) и без третьего изображения. (Выход:http://i.stack.imgur.com/WzZA0.jpg)
Я подумал, что это как-то связано с крошечной черной полоской в конце сшитого изображения, поэтому оператор WarpPerspective не отображает сшитую область. Код :
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);
Результат warpperspective дает черное изображение вместо оставшейся области.
Может кто-нибудь сказать, пожалуйста, где я могу пойти не так и как это исправить?
Спасибо
Прежде всего ваш
Mat final(Size(img_scene.cols + img_object.cols, img_scene.rows*2),CV_8UC3);
должен стать
Mat final(Size(img_scene.cols + img_object.cols, img_scene.rows),CV_8UC3);
так как вам не нужно увеличивать высоту.
Теперь для копирования с ROI, убедитесь, что не перезаписать. Будет ли это работать вместо этого?
Mat roi2(final, Rect(img_object.cols, 0, img_object.cols + result.cols, img_object.rows));
Других решений пока нет …