cv2.createStitcher()没有足够的关键点?

时间:2018-07-02 03:33:02

标签: python opencv opencv-stitching

美好的一天,

我正在一个项目中,有多台摄像机,每个摄像机拍摄一张图像,然后将这些图像缝合在一起。目前,我正在尝试使用 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

但是,结果输出类型变为大小为1且值为值的NoneType:内置模块的NoneType对象。根据我的搜索,其原因是因为没有足够的匹配关键点将图像缝合在一起。如果是这样,有没有办法用更少的关键点来缝合图像?有没有办法设置参数?我通读了文档,没有运气试图找到解决方案。预先谢谢你

2 个答案:

答案 0 :(得分:0)

图像拼接操作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:通常与无法从输入图像正确估计相机功能有关。

根据您的情况,您可以添加更多输入图像,以便检测到足够的关键点,也可以调查自己的实现。

答案 1 :(得分:0)

我复制并运行了您的代码。一切正常。

Left Image

Right Image

Result

我认为该功能无法在图片中找到足够的匹配点。尝试将此代码用于另一组图片可能会有所帮助。