Кто-нибудь знает, почему OpenCV 2 DescriptorMatcher :: radiusMatch ()
и knnMatch ()
взять вектор
? Я немного не понимаю, почему это не просто вектор, ведь это всего лишь один массив точек в сцене, который соответствует обучающему изображению, верно?
У меня есть что-то вроде этого:
void getMatchingPoints(
const vector<vector<cv::DMatch> >& matches,
const vector<cv::KeyPoint>& keyPtsTemplates,
const vector<cv::KeyPoint>& keyPtsScene,
vector<Vec2f>& ptsTemplate,
vector<Vec2f>& ptsScene
)
{
ptsTemplate.clear();
ptsScene.clear();
for (size_t k = 0; k < matches.size(); k++)
{
for (size_t i = 0; i < matches[k].size(); i++)
{
const cv::DMatch& match = matches[k][i];
ptsScene.push_back(fromOcv(keyPtsScene[match.queryIdx].pt));
ptsTemplate.push_back(fromOcv(keyPtsTemplates[match.trainIdx].pt));
}
}
}
но я немного запутался в том, как на самом деле сопоставить прибл. местоположение объекта, как только я получу их все в ptsScene
. Когда я просто рисую их, точки кажутся разбросанными, поэтому я думаю, что мне не хватает того, что представляют собой вложенные векторы.