如何在OpenCV中删除关键点匹配行

时间:2019-03-13 12:38:18

标签: c++ opencv

我要删除线条和关键点。 除了drawMatches之外,还有其他功能吗?或者我可以使行和关键点在drawMatches中不可见吗?

Mat img_matches;
drawMatches( img_object, keypoints_object, img_scene, keypoints_scene,
           good_matches, img_matches, Scalar::all(-1), Scalar::all(-1),
           std::vector<char>(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS );

A picture

1 个答案:

答案 0 :(得分:3)

您可以使用matchesMask参数屏蔽所有匹配项:

Mat img_matches;
std::vector<char> mask_matches(good_matches.size(), 0);
drawMatches( 
    img_object, 
    keypoints_object, 
    img_scene, 
    keypoints_scene,
    good_matches, 
    img_matches, 
    Scalar::all(-1), 
    Scalar::all(-1),
    mask_matches, // <----
    DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS 
);

由于基本上只需要并排放置两个图像,因此您可以自己创建图像。您可以找到示例here