cv2.createStitcher()中关键点不足?

3

我正在开展一个项目,需要多个摄像头,每个摄像头拍摄一张图片,然后将这些图片拼接在一起。目前我正在尝试使用cv2.createStitcher().stitch(images)函数。以下是我使用的代码:

import cv2

imageFiles = ['imageCapture1_0.png','imageCapture2_0.png']
images = []
for filename in imageFiles:
    img = cv2.imread(filename)
    images.append(img)

cv2.ocl.setUseOpenCL(False)
stitcher = cv2.createStitcher()
status, result = stitcher.stitch(images)             

cv2.imwrite('result.png',result)

图像输入为:
左图像: left image 右图像: right image 但是,结果输出类型变成了NoneType,大小为1,值为NoneType对象的builtins模块。根据我所搜到的信息,这是因为匹配关键点不足而不能将图像拼接在一起的原因。如果是这样,是否有方法即使关键点较少也能拼接图片?是否有设置参数的方法?我已经仔细阅读了文档却无法找到解决方案。谢谢你的帮助!

在你的情况下,status 返回什么? - Jeru Luke
状态,类型为整型,大小为1,值为1。 - S.Faiq
1
由于它返回1,您需要添加更多的图像。如果这不是您想要的,那么可以尝试通过合并特征点并将它们匹配来构建自己的拼接模块。 - Jeru Luke
我按照一篇关于全景拼接的博客文章进行操作。使用您提供的图像,我得到了一个倒置的图像 :D。您也可以在此处尝试一下。 - Jeru Luke
2个回答

3
图像拼接操作status, result = stitcher.stitch(images)返回两个值,一个状态指示器和拼接后的图像。您可以检查status的值来确定图像拼接是否成功。从文档中可以看到它有四个变量之一: OK = 0: 图像拼接成功。 ERR_NEED_MORE_IMGS = 1: 在输入图像中没有检测到足够的关键点来构建全景图。您需要更多的输入图像。 ERR_HOMOGRAPHY_EST_FAIL = 2: 当RANSAC单应性估计失败时出现此错误。同样,您可能需要更多的输入图像或所提供的图像没有足够的区分特征,以便准确匹配关键点。 ERR_CAMERA_PARAMS_ADJUST_FAIL = 3: 通常与无法正确估计输入图像的相机特征有关。
对于您的情况,您可以添加更多的输入图像,以便检测到足够的关键点,或者您可以研究自己的实现。

0

我复制并运行了你的代码,一切都正常。

左图

右图

结果

我认为可能是函数在你的图片中找不到足够的匹配点。尝试使用另一组图片可能会有所帮助。


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