【问题标题】:How to remove keypoint-matches lines in OpenCV如何在 OpenCV 中删除关键点匹配行
【发布时间】:2019-03-13 21:18:29
【问题描述】:

我想删除线条和关键点。 除了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 );

【问题讨论】:

  • 如果你不想抽签,为什么还要打电话给drawMatches
  • @Miki 对于 img_matches。我使用线功能绘制绿线。线(img_matches,scene_corners[0] + Point2f(img_object.cols,0),scene_corners[1] + Point2f(img_object.cols,0),标量(0,255,0),4);

标签: c++ opencv


【解决方案1】:

您可以使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 2014-12-20
    • 2022-06-18
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2017-05-31
    相关资源
    最近更新 更多