Có ai biết tại sao OpenCV 2 DescriptorMatcher::radiusMatch()
và knnMatch()
lấy một số vector<vector<DMatch>>& matches
? Tôi hơi bối rối vì sao nó không chỉ là một véc tơ, vì nó chỉ là một mảng điểm trong cảnh tương ứng với hình ảnh đào tạo, đúng không?OpenCV DescriptorMatcher radiusMatch và knnMatch result format
Tôi đã có một cái gì đó như thế này:
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));
}
}
}
nhưng tôi là một chút nhầm lẫn về làm thế nào để thực sự bản đồ xấp xỉ. vị trí của đối tượng khi tôi có tất cả trong ptsScene
. Các điểm dường như phân tán cho tôi khi tôi chỉ vẽ chúng, vì vậy tôi nghĩ rằng tôi thiếu những vectơ lồng nhau đại diện.
rất kỹ lưỡng, cảm ơn rất nhiều! –