由于某种原因,我的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)也会显示该功能根本不存在。
答案 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()
。