我是初学程序员,刚开始使用OpenCV。 我想用OpenCV's stitching.cpp Sample program将2幅图像拼接在一起当我尝试缝合图像时,我要么得到一个"不能缝合图像,错误代码= 1"或者图像中出现了很多黑色的空白区域。我拍摄照片时尝试尽可能多地重叠,但事实仍然如此。 我拍摄照片的方式有问题吗? 以下是我自己拍摄的照片及其输出的示例:
输入图片:
输出图片:
这是一个糟糕的输出。注意黑色空间以及图像看起来有多么不同。输出图像还有一点我无法显示,因为imwrite没有保存文件。我不得不使用imshow,然后做一个屏幕截图,但图像太宽,无法在一个屏幕截图中捕获。无论如何,仍然不是一个好的输出。
以下是我上网另一个拼接程序的示例图片。这些图像完美地拼接在一起:
输出:
答案 0 :(得分:1)
我在查看上面的图像后猜测,您捕获的图像太难以推断可靠的匹配。您可能知道,拼接包括:
你在一个案例中得到了错误拼接的图像,并且拼接非常适合另一对图像,表明你的单应性错误。 Homography取决于匹配的关键点,因此这就是真正的错误所在。
在您发布的第一组图像中,两者都包含键盘。如果SIFT等关键点检测和匹配算法与第二张图像中第二台计算机的 left-shift 的第一张图像中的右移匹配,我不会感到惊讶。这是完全错误的,会弄乱单应性。同样,第一张图像中的屏幕可以与第二张图像中右侧计算机的屏幕匹配(它应该与左侧计算机匹配)。
以上所有都是我的猜测,但我相信它们是正确的。确认这些的好方法是可视化匹配。您的图像不应该有很多重复和模糊的模式。例如,键盘键,屏幕上的小文本等。
答案 1 :(得分:0)
找出问题所在。 不得不降低我的图像的分辨率。我猜想当分辨率过高时,缝合器会对过多的信息感到困惑。 此外,照片被提供给节目的顺序也很重要。我有时必须翻转订单。