'for m,n in match' 是什么意思?

Ari*_*iaz 0 c++ python 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])
Run Code Online (Sandbox Code Playgroud)

注意在 C++ 中matches是一个std::vector<DMatch>并且 是一个 OpenCV 程序。

谢谢!

Sha*_*hew 5

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

m并且nDMatch对象。返回两个对象,因为k=2

matches = bf.knnMatch(des1,des2, k=2).

如果将 的值k增加到 3,则需要

for m,n,p in matches:

以捕获结果。

该CPP等效knnmatch的返回DMatch的矢量的矢量如图所示这里

事实上,如果你打印出来,m.queryIdx, m.trainIdx, n.queryIdx, n.trainIdx你会看到一个模式,264 323 264 490表明查询图像中的相同索引与训练图像中的其他索引相匹配。