这对'm,n匹配'是什么?

时间:2017-06-28 00:07:52

标签: python c++ opencv

我需要具体了解行for m, n in matches能够在C中实现它的内容。matches是一个矩阵,但mn的值是什么采取什么,他们如何移动?

这是python代码......

for m, n in matches:
    if m.distance < 0.75*n.distance:
        good.append([m])

注意在C ++中matchesstd::vector<DMatch>并且是OpenCV程序。

谢谢!

2 个答案:

答案 0 :(得分:2)

我猜你正在使用knnMatcher并按照http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.html上的教程

mnDMatch个对象。返回两个对象,因为{/ 1}}位于

k=2

如果将matches = bf.knnMatch(des1,des2, k=2)的值增加到3,则需要

k

捕获结果。

knnmatch的CPP等价物返回DMatch矢量向量,如图所示here

事实上,如果你打印for m,n,p in matches:,你会看到像m.queryIdx, m.trainIdx, n.queryIdx, n.trainIdx这样的模式,表明查询图像中的相同索引与训练图像中的其他索引相匹配。

答案 1 :(得分:0)

mn是每次迭代matches中出现的值。 &#34;他们如何移动&#34;取决于matches的类型以及它提供的迭代类型。如果它是一个元组列表,那么它们将逐个元素地逐个向下移动。