当前位置: 首页 > 面试题库 >

OpenCV python的API:FlannBasedMatcher

诸葛砚
2023-03-14
问题内容

我正在尝试重写此处描述的代码。使用适用于Opencv的python API。

代码的第3步具有以下几行:

 FlannBasedMatcher matcher;
 std::vector< DMatch > matches;
 matcher.match( descriptors_object, descriptors_scene, matches );

我在OpenCV参考资料中反复查看,但是没有发现与python中的FlannBasedMatcher或其他可以完成工作的对象相关的内容。

有任何想法吗?

注意:我使用的是OpenCV 2.3.1和Python 2.6


问题答案:

在python2文件夹下的OpenCV
2.3.1提供的示例中,我发现了一个基于flann的match函数的实现,该函数不依赖于FlanBasedMatcher对象。

这是代码:

FLANN_INDEX_KDTREE = 1  # bug: flann enums are missing

flann_params = dict(algorithm = FLANN_INDEX_KDTREE,
                    trees = 4)

def match_flann(desc1, desc2, r_threshold = 0.6):
    flann = cv2.flann_Index(desc2, flann_params)
    idx2, dist = flann.knnSearch(desc1, 2, params = {}) # bug: need to provide empty dict
    mask = dist[:,0] / dist[:,1] < r_threshold
    idx1 = np.arange(len(desc1))
    pairs = np.int32( zip(idx1, idx2[:,0]) )
    return pairs[mask]


 类似资料:
  • 问题内容: 此处给出的ThreadLocal的目的是,该变量对于任何访问包含ThreadLocal变量的对象的线程都是局部的。将ThreadLocal变量作为类的成员,然后使其成为Thread的局部变量,而不是使Thread本身具有局部变量,这有什么区别? 问题答案: 线程是执行的单元,因此多个线程可以同时执行相同的代码。如果多个线程同时在一个对象/实例上执行,它们将共享实例变量。每个线程都有其自

  • 问题内容: 对于我的项目,我必须创建一个代理AppDelegate,该代理将把调用转发到另一个AppDelegate。 UIApplicationDelegate有一个。我的问题是,为什么我不能这样做: 该代码的问题是。 有人知道为什么吗? 问题答案: 该物业的协议,声明如下: 这意味着它是一个 可选属性 (在某种意义上,“ 不需要请求 实现协议的类 来实现/具有此属性 ”,就像 在Objecti

  • 问题内容: 我正在使用下面的代码将数据发送到TCP服务器。我假设我需要使用正确地指示客户端已完成发送请求。我的假设正确吗?如果不行,请让我知道目的。也感谢我可以做的任何进一步的优化。 客户 服务器 问题答案: 表示客户端已完成通过TCP连接的所有数据发送。它将发送剩余的数据,然后发送终止序列,该序列将完全关闭其OUTGOING连接。无法发送任何进一步的数据,这也将向您的程序表明请求已完全完成。因此

  • 问题内容: 我可以想到的对于Python类的每次使用,我都可以想到另一个同样(可能更多)可接受的解决方案,以实现相同的效果。例如: 在任何情况下,这都是最合适的解决方案吗?如果是这样,在什么情况下? 问题答案: 该函数是惰性的;它仅使用一项所需的内存。另一方面,和惯用法在内存中创建对象的n个副本。对于五个项目,乘法习惯用法可能更好,但是如果必须重复一百万次,您可能会注意到资源问题。 不过,很难想象

  • 问题内容: 目的是什么 如果我们可以简单地写 ? 相同的 和 问题答案: 从JavaDoc方法: API注意:此方法已用作,

  • 问题内容: php具有以下 功能: 它用相应的值替换字符串中的字典键,并且(重要)不替换已经替换的字符串。天真地尝试在python中编写相同的代码: 返回不是我们想要的(再次被替换)。如何更改上述功能,使其行为类似于其php对应项? (如果可能,我希望没有正则表达式的答案)。 Upd:这里有一些很好的答案。我对它们进行了计时,发现对于短弦琴,Gumbo的版本似乎是最快的,而在长弦琴上,胜者是解决方

  • 问题内容: 此方法的意义/目的是什么? 问题答案: 应该返回对象的可打印表示形式,这很可能是创建该对象的 一种 可能方式。请参阅此处的官方文档。对于开发人员而言更多,而对于最终用户而言则更多。 一个简单的例子:

  • 我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?