我需要特别知道这条线for m, n in matches做了什么才能在 C 中实现它。matches是一个矩阵,但是值做什么m和n取什么以及它们如何移动?
这是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 程序。
谢谢!
我猜你正在使用 knnMatcher 并遵循http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.html 上的教程
m并且n是DMatch对象。返回两个对象,因为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表明查询图像中的相同索引与训练图像中的其他索引相匹配。
| 归档时间: |
|
| 查看次数: |
1918 次 |
| 最近记录: |