我的python opencv绑定中似乎缺少Stitcher API

时间:2018-09-07 10:29:54

标签: python opencv

由于某种原因,我的opencv python绑定中似乎缺少了订书机绑定。例如,这段代码:

import cv2
stitcher = cv2.createStitcher(False)
foo = cv2.imread("foo.png")
bar = cv2.imread("bar.png")
result = stitcher.stitch((foo,bar))

cv2.imwrite("result.jpg", result[1])

导致此错误:

AttributeError: 'module' object has no attribute 'createStitcher'

在python解释器中运行help(cv2)也会显示该功能根本不存在。

2 个答案:

答案 0 :(得分:0)

我猜您最近升级了Cv2版本(此处相同)。为了安全起见,请先点点卸载所有Cv2内容,然后重新安装最新版本。查看Stitcher的Cv2源代码,您将发现需要使用新的语法来创建实例。这是将目录中的图像拼接在一起的代码:

import cv2
import os
import re

def tryint(s):
    try:
        return int(s)
    except:
        return s

def alphanum_key(s):
    return [tryint(c) for c in re.split('([0-9]+)', s)]

def sort_nicely(l):
    l.sort(key=alphanum_key)
    return l


directory = "Image/Directory"
fileNameKeys = ['File','Names','Contain','These','Strings']


dirList = sort_nicely([file for file in os.listdir(directory) if all(substring in file for substring in fileNameKeys)])
images = [cv2.imread(directory + '/' + imageFile) for imageFile in dirList if True]
print(dirList)


#################################
stitcher = cv2.Stitcher.create()
#################################


stitchOut = stitcher.stitch(images)
print("Stitcher exit status = " + str(stitchOut[0]))
print("Hit any Key to continue and save image")
cv2.imshow('Stitched Image', stitchOut[1])
cv2.waitKey(0)
cv2.imwrite(directory + "/" + "STITCH.png", stitchOut[1])

答案 1 :(得分:0)

可能是因为您使用的是OpenCV 4。

如果您使用的是OpenCV 4,则应使用cv2.Stitcher_create()(也可以使用cv2.Stitcher.create())。

如果您使用的是OpenCV 3,则应像以前一样使用cv2.createStitcher()