我想获得指定点的SIFT功能。这些点不是由KeyPoint Detector手动获得的。我的问题是:我只知道点的位置,但不知道大小 Angular 值。我应该如何设定这个值?

这是我的代码:

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;
}

我应该将32x32补丁的KeyPoint的大小参数设置为32。这个实现合理吗?

最佳答案

通常,关键点检测器在某个点附近的本地邻域上工作。这是OpenCV的size类的KeyPoint字段。 angle字段是关键点的主要方向(注意,可以将其设置为-1)。

OpenCV KeyPoint class

Another reference here.

08-28 22:39