擅长:python、mysql、java
<p>请参阅<a href="https://stackoverflow.com/questions/8301962/opencv-pythons-api-flannbasedmatcher">this question</a>的答案。</p>
<p>以下是相关代码,来自<a href="https://stackoverflow.com/users/1053925/esteban-angee">Esteban Angee</a>的答案:</p>
<pre><code>r_threshold = 0.6
FLANN_INDEX_KDTREE = 1 # bug: flann enums are missing
</code></pre>
<p>构造参数字典:</p>
<pre><code>flann_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 4)
flann = cv2.flann_Index(desc2, flann_params)
</code></pre>
<p>执行近邻搜索:</p>
<pre><code>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]) )
</code></pre>
<p>返回匹配的描述符:</p>
<pre><code>return pairs[mask]
</code></pre>
<p>我现在不在我的工作站上,所以我恐怕看不到你的代码有什么问题,但是当我遇到同样的问题时,上面的问题解决了我所有的问题。你不必使用<code>FlannBasedMatcher</code>,我记得我也有问题。</p>
<p>如果没用的话,我明天左右就能找到解决办法。</p>