我目前已经建立了一个能够拼接任意数量图像的拼接程序,但它们必须具有特定的顺序,这对我的特定图像集来说是一个问题(使用1452个图像)。我的目标是创建一个无序的拼接程序。我确信当我在物理上(实际上)将图像彼此拼接时就会发生这个问题。
这是我缝合的代码(假设找到的关键点是准确的以及单应性)
def stitchMatches(self,image1,image2,homography):
#gather x and y axis of images that will be stitched
height1, width1 = image1.shape[0], image1.shape[1]
height2, width2 = image2.shape[0], image2.shape[1]
#create blank image that will be large enough to hold stitched image
blank_image = np.zeros(((width1 + width2),(height1 + height2),3),np.uint8)
#stitch image two into the resulting image while using blank_image
#to create a large enough frame for images
result = cv2.warpPerspective((image1),homography,blank_image.shape[0:2])
#numpy notation for slicing a matrix together allows you to see the image
result[0:image2.shape[0], 0:image2.shape[1]] = image2
return result
我认为问题在于这两行。
result = cv2.warpPerspective((image1),homography,blank_image.shape[0:2])
result[0:image2.shape[0], 0:image2.shape[1]] = image2
当我在有序图像上运行代码(图像1位于最东北部)时,设置为结果。
然而,当我以相反的顺序运行图像时,我得到了这个结果。
根据我的理解,这是因为我已将结果图像形状设置为映射到图像2,但无法开展解决方法。
这是一张多张图片的照片,显示相同的图片被裁剪出来的问题。
感谢任何帮助。