2013-10-09 2 views
2

У меня есть набор баллов <Point2f> Left и еще <Point2f> Right, которые могут иметь одинаковые или разные size(). Я знаю, что первая точка в левом соответствует первой точке справа и т. Д. Есть ли способ построить vector <Dmatch> matches, чтобы продолжить, например. нарисовать их, используя drawMatches? Я использую C++.Построить вручную вектор <Dmatch> в opencv

ответ

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); 
Смежные вопросы