SURF OpenCV - 预定义点的SURF描述符

时间:2012-04-03 03:28:18

标签: opencv surf

我在http://opencv.willowgarage.com/documentation/python/feature_detection.html

阅读了OpenCV SURF手册“ExtractSURF”

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

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

这有什么决议吗?

由于

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

根据手册OPENCV文件,功能" extractSURF"格式如下:
cv.ExtractSURF(图像掩码存储参数) - > (关键点描述符

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

    如您所见,extractSURF函数用于计算从检测到描述的SURF的整个过程,因此您不能使用您自己的特征来计算SURF描述符的函数。
    此外,检测过程中关键点的比例与构造提取描述符关键点周围区域的比例之间的关系。使用SURF描述符提取过程的其他功能是不合适的。
    因此,在Opencv 3.0中,SURF目前只有两个函数 detect detectAndCompute 。它允许计算 SURF功能分开。

答案 3 :(得分: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)

参数是&#34; useProvidedKeypoints&#34;其中

  

布尔标志。如果是,则不运行关键点检测器。   相反,使用提供的关键点矢量和算法   只计算他们的描述符。&#34;

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