1
我已經匹配的兩幅圖像的描述符的兩個向量:如何在Opencv中繪製匹配?
cv::Ptr<BinaryDescriptorMatcher> bdm = BinaryDescriptorMatcher::createBinaryDescriptorMatcher();
std::vector<std::vector<cv::DMatch> > matches;
float maxDist = 10.0;
bdm->radiusMatch(descr2, descr1, matches, maxDist);
// descr1 from image1, descr2 from image2
std::vector<char> mask(matches.size(), 1);
但現在我想從兩個圖像繪製找到的匹配。
這不起作用:
drawMatches(gmlimg, keylines, walls, keylines1, matches, outImg, cv::Scalar::all(-1), cv::Scalar::all(-1), mask, DrawLinesMatchesFlags::DEFAULT);
而這既不是:
drawLineMatches(gmlimg, keylines, walls, keylines1, matches, outImg, cv::Scalar::all(-1), cv::Scalar::all(-1), mask, DrawLinesMatchesFlags::DEFAULT);
你怎麼知道他們不工作?你期望哪場比賽的比賽?對我來說,你應該嘗試'cv :: Scalar :: all(255,255,255)',你應該得到白線。另外,你從圖像2中獲得匹配,但是反過來繪製(但我不知道'gmlimg'是圖像1還是2) –
drawLineMatches不起作用,因爲匹配必須是std: :vector,但是我的std :: vector >,因爲radiusMatch需要它。 並且drawMatch需要kepoints而不是keylines。 http://docs.opencv.org/3.0-beta/modules/line_descriptor/doc/drawing_functions.html http://docs.opencv.org/2.4.8/modules/features2d/doc/drawing_function_of_keypoints_and_matches .html –
Philipp
這與'drawMatches'不起作用的原因不一樣嗎? –