2014-12-04 3 views
1

Я хочу получить функцию SIFT для определенных точек. Эти очки получаются вручную не с помощью KeyPoint Detector. Мой вопрос: я знаю только позиция пунктов, но понятия не имею о размер и угол значение. Как мне установить это значение?Получите дескриптор SIFT для указанной точки с помощью OpenCV

Вот мой код:

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

Должен ли я установить размер параметров из Keypoint 32 для 32х32 пластыря. Является ли эта реализация разумной?

ответ

1

Обычно детекторы ключевых точек работают в локальной окрестности вокруг точки. Это поле size класса KeyPoint OpenCV. Поле angle является доминирующей ориентацией ключевой точки (это может быть установлено на -1, примечание).

OpenCV KeyPoint class

Another reference here.

+0

Так я право устанавливать размер 32? – tidy

+0

И установка размера 32 означает: 32x32 локальный локальный участок вокруг точки, не так ли? – tidy

+0

Я бы так сказал, да. Но это совершенно бессмысленно, поскольку то, что вы отмечаете, это всего лишь точки, а не ключевые точки. Будет вопрос о том, что эти точки используются на следующем этапе алгоритма. –

Смежные вопросы