【问题标题】:How can I use OpenCV DescriptorMatcher on two arrays of points?如何在两个点数组上使用 OpenCV DescriptorMatcher?
【发布时间】:2022-11-09 15:28:14
【问题描述】:

是否可以使用OpenCV DescriptorMatcher 匹配两个点数组而不是特征提取函数生成的两个描述符?

我想使用 OpenCV 进行点集注册,并且我已经获得了两个点集而没有使用特征提取函数。

【问题讨论】:

  • 这似乎有点困难,因为cv2.DescriptorMatcher 就像文档中所说的一个抽象类,它由各种 Matcher 类继承。您也可能无法成功地模拟一个额外的 Matcher 类的数组,因为您的模拟未在 cv2.DescriptorMatcher 的枚举中定义为 Matcher。

标签: python opencv


【解决方案1】:

您可以在没有特征提取器的情况下从图像中获取点的描述符。为此有一个 DescriptorExtractor 类。然后,您可以使用适当的匹配器来查找对应关系。

如果您的点只有位置信息,请选择一个没有角度和八度音程的描述符算法。例如。简短的

【讨论】:

    【解决方案2】:

    事实证明,您可以使用点数组(二维数组)作为匹配器的输入:

    method = cv2.DESCRIPTOR_MATCHER_BRUTEFORCE_L1
    matcher = cv2.DescriptorMatcher_create(method)
    matches = matcher.match(src.astype(np.float32), dst.astype(np.float32), None)
    

    src 和 dst 只是要匹配的二维点数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多