2014-12-04 115 views
1

我想获取指定点的SIFT特征。这些点不是通过KeyPoint检测器手动获得的。我的问题是:我只知道位置的点数,但不知道大小角度的值。我应该如何设置这个值?使用OpenCV获取指定点的SIFT描述符

这里是我的代码:

int main() 
{ 
    Mat img_object = imread("img/test.jpg", 0); 

    SiftDescriptorExtractor extractor; 
    Mat descriptors; 
    std::vector<KeyPoint> keypoints; 

    // set keypoint position and size: should I set 
    // size parameter to 32 for 32x32 patch? 
    KeyPoint kp(50, 60, 32); 
    keypoints.push_back(kp); 

    extractor.compute(img_object, keypoints, descriptors); 

    return 0; 
} 

我应该关键点的大小参数设置为32 32×32补丁。这个实施是否合理?

回答

1

通常,关键点检测器在一个点周围的本地邻域上工作。这是OpenCV的KeyPoint类的size字段。 angle字段是关键点的主导方向(可以将其设置为-1,note)。

OpenCV KeyPoint class

Another reference here.

+0

所以,我说的对大小设置为32? – tidy 2014-12-05 01:54:00

+0

并将大小设置为32表示:围绕某个点的32x32本地邻域修补程序,对不对? – tidy 2014-12-05 02:03:38

+0

我会这么说,是的。但这是没有意义的,因为你所标记的只是点而不是关键点。这将是一个问题,这些点是用于在算法的下一阶段。 – 2014-12-05 09:27:11