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

标签 python opencv surf sift

我正在尝试使用 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/

相关文章:

Python 请求 - 使用 multipart/form-data 发布一个 zip 文件

opencv - 合并多个 cv::Mat?

python - 导入语句中带有斜杠的任意 python 名称

python - 如何在 sklearn 中使用 SVC 运行 RFECV

opencv - OpenCV 中 Mat Image 的非感兴趣区域

python-3.x - 如何运行 opencv_traincascade?

c++ - OpenCV - 仅在绘制单应性时打印对象名称

opencv - 从特征关键点在 OpenCV 中手动进行成对匹配

python - 如何使用 Python 打开 DWG 文件扩展名?

image - OpenCV cv::Mat 显示空的灰色图像?找不到原因