多图拼接 - 添加第三张图片

3
我正试图将第三张图像拼接到已经拼接了两张图像的结果上,但是好像不起作用。
更具体地说,我已经成功地使用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)拼接到这个图像中,但是拼接不起作用。特征匹配完美运行。
但执行程序后,我获得了具有较大黑色区域(由于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的结果会给出一张黑色的图片,而不是其余区域。
请问有没有人能告诉我可能哪里出错了,以及如何解决?谢谢。

还没有。我还在努力。 - hriddle
你好,你解决了这个问题吗?我也遇到了同样的问题。需要帮助解决。 - shalki
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));

我明白为什么这一行不应该乘以2,但如果我不这样做,就会出现关于断言失败和roi的错误。 如果我使用你提到的最后一条语句,我也会遇到同样的错误。无论如何,我认为roi矩阵只是定义图像,而copyTo函数对齐图像。谢谢你的尝试。 - hriddle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接