4

我正在尝试使用 OpenCV(2.4.6.0) 从我提供的关键点中检索描述符。

到目前为止,我还没有成功...

l, des = surf.detectAndCompute(self.gray,None,useProvidedKeypoints = True)

其中l是特征点数组。我不确定在哪里输入我已经拥有的关键点......

有谁知道我如何使用 SIFT 或 SURF 来做这件事?

谢谢您的帮助!

4

1 回答 1

4

这看起来像是 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()

于 2013-10-25T15:56:10.210 回答