我正在尝试使用 OpenCV(2.4.6.0) 从我提供的关键点中检索描述符。
到目前为止,我还没有成功...
l, des = surf.detectAndCompute(self.gray,None,useProvidedKeypoints = True)
其中l
是特征点数组。我不确定在哪里输入我已经拥有的关键点......
有谁知道我如何使用 SIFT 或 SURF 来做这件事?
谢谢您的帮助!
这看起来像是 Python 绑定的问题detectAndCompute()
,因为 C++ 等效项确实允许输入关键点。幸运的是,有一种解决方法。如果您已经检测到关键点并将它们存储在 中l
,那么您可以创建一个DescriptorExtractor
对象并为提供的关键点计算描述符。
生成 FAST 关键点然后计算 SURF 描述符的示例如下:
im = cv2.imread(path_to_image)
fast = cv2.FeatureDetector_create('FAST')
l = fast.detect(im)
surf = cv2.DescriptorExtractor_create('SURF')
l, des = surf.compute(im, l)
这同样适用于 SIFT 特征。只需将'SIFT'
其作为参数传递给即可cv2.DescriptorExtractor_create()
。