2

我有一组点<Point2f> Left和另一个点<Point2f> Right,可能相同或不同size()。我知道 Left 中的第一个点对应于 Right 等中的第一个点。有没有办法构造 avector <Dmatch> matches以便继续进行,例如使用 绘制它们drawMatches?我正在使用 C++。

4

1 回答 1

1

你知道对应关系吗?

如果它们的大小不同,您需要知道对应关系。在任何情况下,假设它们的大小相同并且对应,这就是你的做法(没有编译它,所以它可能有错误)

DMatch 是一个用于记账以跟踪索引的简单包装器

vector<DMatch> matches(left.size());
for(size_t i = 0; i <left.size(); ++i)
  matches[i] = Dmatch(i, i, 0);

// make keypoints 
vector<KeyPoint> kp_left(left.size());
for(size_t i = 0; i < left.size(); ++i)
  kp_left[i] = Keypoint(left[i], 1);
// do the same for the right image 

// draw the stuff
drawMatches(left_image, keypts_left, right_image, keypts_right, matches, out_image);
imshow("matches", out_image);
waitKey(0);
于 2014-10-24T05:19:23.660 回答