这是OpenCV的 drawMatches()
函数:
void drawMatches(Mat img1, vector<KeyPoint> keypoints1,
Mat img2, vector<KeyPoint> keypoints2,
vector<DMatch> matches,
Mat outImg) //want keypoints1[i] = keypoints2[matches[i]]
注意,
matches
的类型为vector<DMatch>
。这是 DMatch
构造函数:DMatch(int queryIdx, int trainIdx, float distance)
大概
queryIdx
是一组关键点的索引,而trainIdx
是另一组关键点的索引。问题:真的是
queryIdx
索引到keypoints1
,而trainIdx
索引到keypoints2
吗?或者是周围的其他方式? 最佳答案
那取决于你如何获得matches
。
如果您按以下顺序调用匹配功能:
match(descriptor_for_keypoints1, descriptor_for_keypoints2, matches)
然后
queryIdx
指的是keypoints1
,而trainIdx
指的是keypoints2
,反之亦然。关于c++ - OpenCV drawMatches — queryIdx和trainIdx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13318853/