SIFT或SURF - 提供关键点和检索描述符

时间:2013-10-25 13:47:47

标签: python opencv surf sift

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

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

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

其中l是一系列要素点。我不知道在哪里输入我已经拥有的关键点......

有人知道如何使用SIFT或SURF进行此操作吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

这似乎是detectAndCompute()的Python绑定问题,因为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()