Сохранение индексов ключевых точек при сопоставлении одного изображения запроса со списком из нескольких изображений

Я использую OpenCV 3.3.
Я хочу использовать функцию соответствия OpenCV C ++ для объекта типа Vector Dmatch.
Цель состоит в том, чтобы сопоставить дескрипторы из одного изображения запроса с дескрипторами из списка из нескольких изображений.
Я знаю, что когда эта функция используется для сопоставления дескрипторов одного изображения с дескрипторами другого отдельного изображения, индексы двух ключевых точек, соответствующие каждому подходящему дескриптору на каждом изображении, сохраняются в каждом объекте Dmatch из вектора.

Например, если я сделаю

Mat img_1=imread("path1...");
Mat img_2=imread("path2...");

vector<KeyPoint> keypoints_1, keypoints_2;
Mat descriptors_1, descriptors_2;

detector->detectAndCompute(img_1, Mat(), keypoints_1, descriptors_1 );
detector->detectAndCompute( img_2, Mat(), keypoints_2, descriptors_2 );

FlannBasedMatcher matcher;
vector< DMatch > matches;
matcher.match( descriptors_1, descriptors_2, matches );

затем, если я хочу получить доступ к ключевым точкам, которые были сопоставлены, для каждого i, который является int, который уступает match.size (), то

int idx=matches[i].trainIdx;
int idy=matches[i].queryIdx;

point2f matched_point1=keypoints1[idx].pt;
point2f matched_point2=keypoints2[idy].pt;

Однако, что происходит, когда я пытаюсь сопоставить дескрипторы из одного изображения запроса с дескрипторами из списка из нескольких изображений, так как каждый объект Dmatch может содержать только два индекса, в то время как я хочу сопоставить более двух изображений.
то есть:

vector<Mat> descriptors1;
Mat descriptors2;

matcher.add( descriptors1 );
matcher.train();

matcher.match(descriptors2, matches );

что будут означать эти индексы?

int idx=matches[i].trainIdx;
int idy=matches[i].queryIdx;

0

Решение

Вы можете сохранить совпадающие значения индекса для всех изображений поезда в списке, просматривая изображения. Затем вы можете выбрать подходящие точки и играть с ними так, как вы хотите.

0

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector