【问题标题】:How to get the positions of the matched points with Brute-Force Matching / SIFT Descriptors如何使用蛮力匹配 / SIFT 描述符获取匹配点的位置
【发布时间】:2019-06-09 18:16:00
【问题描述】:

我尝试将我的 SIFT-Keypoints 与 BF-matcher 进行匹配。我曾经像this那样做。

但如果我想用print(good) 获得 x,y 位置,它只会给我这样的东西:

DMatch 000001DD9C4E0EB0

如何将其转换为职位?

【问题讨论】:

    标签: python opencv sift


    【解决方案1】:

    由于您没有提供代码,我根据教程中的代码回答您的问题。 基本上,关键点是 SIFT 算法检测到的具有旋转、比例和 x,y 位置的点,而描述符只是用于匹配它们的特征向量。 在匹配变量中,您有一组描述符之间的匹配项(DMatch)。关键点位于 kp1 和 kp2 中。 要查找匹配的两个点 (p1,p2),请使用如下代码:

    for match in matches:
      p1 = kp1[match.queryIdx].pt
      p2 = kp2[match.trainIdx].pt
    

    【讨论】:

    • 它与教程中的代码相同(暴力匹配与 SIFT 描述符和比率测试),但是当我添加您的代码时,它显示我“AttributeError:'list' 对象没有属性'queryIdx '"
    • @hajo ,请确保在匹配项中附加“m”,而不是“[m]”。如果您要附加 [m],只需改为使用 ie kp1[match[0].queryIdx].pt
    猜你喜欢
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2015-02-01
    相关资源
    最近更新 更多