我想在将两张图像拼接在一起后缝合第三张图像,但它似乎不起作用。
详细说明,我使用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);
warperpective的结果给出黑色图像而不是剩余区域。
有人可以告诉我哪里可能出错了以及如何解决? 感谢
答案 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));