我正在尝试使用 OpenCV(2.4.6.0) 从我提供的关键点检索描述符。
到目前为止,我还没有成功...
l, des = surf.detectAndCompute(self.gray,None,useProvidedKeypoints = True)
其中 l
是一个特征点数组。我不确定在哪里输入我已经知道的关键点...
有人知道我如何使用 SIFT 或 SURF 来完成这项工作吗?
感谢您的帮助!
最佳答案
这看起来像是 detectAndCompute()
的 Python 绑定(bind)问题,因为 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()
。
关于python - SIFT 或 SURF - 提供关键点并检索描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19591628/