क्या किसी को यह पता चल जाता है कि ओपनसीवी 2 DescriptorMatcher::radiusMatch()
और knnMatch()
vector<vector<DMatch>>& matches
क्यों लेते हैं? मैं थोड़ी उलझन में हूं कि यह सिर्फ एक वेक्टर क्यों नहीं होगा, क्योंकि यह उस दृश्य में केवल एक ही पंक्ति है जो प्रशिक्षण छवि से मेल खाता है, है ना?ओपनसीवी डिस्क्रिप्टर मैटर त्रिज्या मैच और 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
में रखता हूं। जब मैं उन्हें खींचता हूं तो अंक मुझे बिखरे हुए लगते हैं, इसलिए मुझे लगता है कि मुझे याद आ रही है कि नेस्टेड वैक्टर क्या दर्शाते हैं।
बहुत अच्छी तरह से, बहुत बहुत धन्यवाद! –