Python 如何使用蛮力匹配/筛选描述符获取匹配点的位置

Python 如何使用蛮力匹配/筛选描述符获取匹配点的位置,python,opencv,sift,Python,Opencv,Sift,我试着用BF matcher匹配我的SIFT关键点。我过去喜欢这样做 但是如果我想用print(good)得到x,y位置,它只会给我这样的结果: for match in matches: p1 = kp1[match.queryIdx].pt p2 = kp2[match.trainIdx].pt DMatch 000001DD9C4E0EB0 如何将其转换为位置?由于您没有提供任何代码,我将根据教程中的代码回答您的问题。 基本上,关键点是SIFT算法通过旋转、缩放和x、y位置检测到

我试着用BF matcher匹配我的SIFT关键点。我过去喜欢这样做

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

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


如何将其转换为位置?

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

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

由于您没有提供代码,我将根据教程中的代码回答您的问题。 基本上,关键点是SIFT算法通过旋转、缩放和x、y位置检测到的点,描述符只是用于匹配它们的特征向量。 在matches变量中,有一组描述符之间的匹配(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改为[code>。它与教程中的代码相同(使用SIFT描述符和比率测试进行暴力匹配),但当我添加代码时,它会显示“AttributeError:'list'对象没有属性'queryIdx'”@hajo,请确保在匹配中添加'm',而不是[m] “。如果要追加[m],只需将ie
kp1[match[0].queryIdx].pt改为。