筛选或 SURF - 提供关键点并检索描述符



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

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

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

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

有谁知道我如何使用SIFT或SURF来做到这一点?

感谢您的帮助!

看起来像是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()即可。

最新更新