我有一组点<Point2f> Left
和另一个<Point2f> Right
,可以有相同或不同的size()
。我知道Left中的第一个点对应于Right等中的第一个点。有没有办法构造vector <Dmatch> matches
以便继续进行,例如使用drawMatches
绘制它们?我正在使用c ++。
答案 0 :(得分: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);