2

我在http://opencv.willowgarage.com/documentation/python/feature_detection.html阅读了 OpenCV SURF 手册“ExtractSURF”

据我了解,此功能会自动查找图像上的 SURF 特征。

在许多情况下,用户希望将这些特征(由其他算法检测到)提供给该函数以获取这些点的 SURF 描述符。但我认为该功能(ExtractSURF)不支持该功能。我对吗??它使用它发现的 SURF 功能进行了修复

这个有解决办法吗??

谢谢

4

4 回答 4

1

您想要 opencv 2.3 附带的名为 find_obj.py 的示例,它位于 opencv\samples\python2 示例目录中。

这是在 cv2 和 python 中使用 SURF 的一个很好的例子。

关于特征检测器的文档在这里: http: //opencv.itseez.com/modules/features2d/doc/common_interfaces_of_feature_detectors.html#surffeaturedetector

于 2012-04-03T08:01:15.683 回答
0

的,但不是 OpenCV python API。在 C++ 中使用SurfDescriptorExtractor 。

于 2012-04-03T05:34:14.217 回答
0

根据手册 OPENCV 文档,函数“extractSURF”的格式如下:
cv.ExtractSURF( image , mask , storage , params )-> ( keypoints , descriptors )

  • 关键点:包含关键点坐标(x,y)和比例等的关键点数组。
  • 描述符:基于关键点坐标和 SURF 检测该关键点的比例的 SURF 描述符。

    如您所见,extractSURF 函数用于计算 SURF 从检测到描述的整个过程,因此您不能使用自己的函数来计算 SURF 描述符。
    此外,检测过程中关键点的规模与在关键点周围构建区域以提取描述符的规模之间的关系。在 SURF 描述符提取过程中使用其他特征是不合适的。
    因此,在 Opencv 3.0 中,目前只有两个函数detectdetectAndCompute用于 SURF。它不允许_计算要分离的 SURF 函数。
于 2016-04-06T11:40:34.443 回答
0

从 OpenCV 的文档来看,SIFT 和 SURF 特征检测算法都支持这个特性:

 C++: void SURF::operator()(InputArray img, InputArray mask, vector<KeyPoint>& keypoints, OutputArray descriptors, bool useProvidedKeypoints=false)

 C++: void SIFT::operator()(InputArray img, InputArray mask, vector<KeyPoint>& keypoints, OutputArray descriptors, bool useProvidedKeypoints=false)

参数是“useProvidedKeypoints”,其中

布尔标志。如果为真,则不运行关键点检测器。相反,使用提供的关键点向量,算法只计算它们的描述符。”

因此,在这种情况下,如果您已经获得了一些您感兴趣的点,您可以将它们输入到函数中,它会相应地返回这些点的计算描述符(在这种情况下不运行关键点检测器)

于 2016-04-06T12:28:08.373 回答