2014-12-04 113 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