Использование SIFT и OpenCV для распознавания объектов

У меня есть изображение, которое является изображением одного из набора объектов, и я хотел бы использовать SIFT в Open CV, чтобы выяснить, какой объект это. У меня есть этот код:

Mat pic = imread(...);
vector<KeyPoint> picKP;
Mac picDesc;

Mat obj1 = imread(...);
Mat obj2 = imread(...);
Mat obj3 = imread(...);
vector<KeyPoint> obj1KP;
vector<KeyPoint> obj2KP;
vector<KeyPoint> obj3KP;
Mat obj1Desc;
Mat obj2Desc;
Mat obj3Desc;

SIFT sifter = SIFT();

sifter.detect(pic, picKP);
sifter.detect(obj1, obj1KP);
sifter.detect(obj2, obj2KP);
sifter.detect(obj3, obj3KP);

sifter.compute(pic, picKP, picDesc);
sifter.compute(obj1, obj1KP, obj1Desc);
sifter.compute(obj2, obj2KP, obj1Desc);
sifter.compute(obj3, obj3KP, obj1Desc);

FlannBasedMatcher matcher;
vector<DMatch> matches1;
vector<DMatch> matches2;
vector<DMatch> matches3;

matcher.match(picDesc, obj1Desc, matches1);
matcher.match(picDesc, obj2Desc, matches2);
matcher.match(picDesc, obj3Desc, matches3);

Генерирует vector<DMatch> сравнить мою фотографию с каждой потенциальной картиной. Но я не знаю, что делать с 3 vector<DMatch>Это выяснить, какой из них лучше всего подходит.

Примечание: я делаю это в основном, чтобы попытаться узнать о SIFT, поэтому, хотя я знаю, что для моего конкретного набора данных доступны более эффективные способы, я все же хочу попробовать сделать это с SIFT.

0

Решение

Смотрите API для DMatch тип данных здесь:
http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_descriptor_matchers.html#dmatch

0

Другие решения


По вопросам рекламы [email protected]