3

我试图在将两个图像拼接在一起后拼接第三个图像,但它似乎不起作用。

为了详细说明,我使用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 的结果给出了黑色图像而不是剩余区域。

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

4

1 回答 1

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));
于 2013-02-20T22:41:25.713 回答