多个图像拼接 - 添加第三个图像

时间:2013-02-18 07:47:44

标签: c++ opencv image-processing homography image-stitching

我想在将两张图像拼接在一起后缝合第三张图像,但它似乎不起作用。

详细说明,我使用opencv文档(http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html)中给出的代码成功拼接了两个图像,并获得了此图像。 http://i.stack.imgur.com/gqQjV.jpg

然后,经过大量阅读和ROI问题后,我删除了图像的黑色部分以获得此图像。 enter image description here

现在,我正在尝试使用相同的代码将第三张图像(http://i.stack.imgur.com/nXD86.jpg)缝合到此处,但拼接不起作用。功能匹配完美无缺。

enter image description here

但是在执行程序之后,我获得了具有更大黑色区域的相同图像(由于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);

warperpective的结果给出黑色图像而不是剩余区域。

有人可以告诉我哪里可能出错了以及如何解决? 感谢

1 个答案:

答案 0 :(得分:1)

首先是你的

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));