我试图使拼接tif图片,但它不工作,它不来自代码:
import cv2
image_paths=['LFMstar_6.png','LFMstar_7.png']
# initialized a list of images
imgs = []
for i in range(len(image_paths)):
imgs.append(cv2.imread(image_paths[i]))
#imgs[i]=cv2.resize(imgs[i],(0,0),fx=0.4,fy=0.4)
# this is optional if your input images isn't too large
# you don't need to scale down the image
# in my case the input images are of dimensions 3000x1200
# and due to this the resultant image won't fit the screen
# scaling down the images
# showing the original pictures
cv2.imshow('1',imgs[0])
cv2.imshow('2',imgs[1])
stitchy=cv2.Stitcher.create()
(dummy,output)=stitchy.stitch(imgs)
if dummy != cv2.STITCHER_OK:
# checking if the stitching procedure is successful
# .stitch() function returns a true value if stitching is
# done successfully
print("stitching ain't successful")
else:
print('Your Panorama is ready!!!')
字符串
我尝试了jpg格式的图片,它的工作完美,但不是与我的...也许我的图片之间的重叠不工作?我的tif图片目前是140x140像素。我把图片转换成RGB和JPG格式,但没有改变任何东西。这里有一个我的形象的例子。
谢谢你的好意
enter image description here
enter image description here的
1条答案
按热度按时间cgvd09ve1#
回答您的问题:您的图像没有足够的重叠或没有包含足够的“关键点”,因此OpenCV无法确定它们如何组合在一起。
通过稍微修改你的代码,你可以(稍微)了解更多关于进程失败的原因。具体来说,您应该使用
stitch
函数(在code you are using中称为dummy
)提供的返回代码。检查返回值通常是一个很好的做法。OpenCV通常不会引发Python异常,所以这是知道什么时候出错的唯一方法。
字符串
使用您提供的图像,
STITCHER_ERR_NEED_MORE_IMGS
的错误代码为1。由于某种原因,OpenCV无法在图像之间找到足够多的无歧义的共同特征(“关键点”),以便将它们拼接在一起。这可能是由于图像的小尺寸,或相对线性的设计,或平坦的颜色,如果不访问缝合器的内部图像处理管道,真的很难知道。
由于您的图像确实有一些重叠,并且它们之间似乎没有任何失真或偏移,因此使用更简单的方法(例如,将它们连接起来)应该相对简单。自相关)。图像如此之小的事实也意味着这种方法的计算费用将是合理的。