我正在尝试将opencv的单词图像描述符提取器对象(cv2.BOWImgDescriptorExtractor)导出到磁盘。我已经尝试过opencv的FileStorage类和cPickle,但它们都没有用。
这是我用来创建对象的代码:
sift = cv2.xfeatures2d.SIFT_create()
bowDiction = cv2.BOWImgDescriptorExtractor(sift, cv2.BFMatcher(cv2.NORM_L2))
然后使用opencv中的FileStorage类:
f = cv2.FileStorage('test.yml',flags=1)
f.write(name='bowDict',val=bowDiction)
f.release()
这返回了一个错误说:
TypeError: val is not a numpy array, neither a scalar
当我尝试使用cPickle来挑选对象时,它返回了:
TypeError: can't pickle cv2.BOWImgDescriptorExtractor objects
我查看了许多来源,但没有找到任何结论,所以是否有适当的文档存储此对象的方法?
答案 0 :(得分:0)
初始化BOWExtractor对象很快,因此也许不需要存储它。 但是从BOW Kmeans培训师集群获取词汇需要时间。因此,也许我们可以在获取词汇后对其进行存储,并将其加载到BOWExtractor的setVocabulary中