1

我正在尝试使用此链接中的代码:OpenCV python's API: FlannBasedMatcher

但是,我收到错误:

File "C:\Users\User\Desktop\lktracker\lktrack.py", line 22, in match_flann
flann = cv2.flann_Index(desc2, flann_params)
TypeError: features is not a numpy array, neither a scalar

这是我调用 FLANN 函数的代码部分:

for i in range(rowsInOrigDes):
        for j in range(rowsInNextDes):

            origDesArr = np.array(origDes[i,:])             
            nextDesArr = np.array(nextDes[j,:])             
            origDesArr = [float(x) for x in origDesArr]
            nextDesArr = [float(x) for x in nextDesArr]
            b = match_flann(origDesArr, nextDesArr, r_threshold = 0.6)
            if b:
                print b

我是否正确使用了这个功能?我也不确定要声明什么b..

如果有人可以帮助解决这个问题,我将不胜感激。

4

1 回答 1

3

问题是这features是一个列表,而不是一个 numpy 数组。这就是 TypeError 告诉你的。Flann 只接受 float32 类型的 numpy 数组。

在不查看整个代码的情况下为您提供解决方案有点困难,但这很简单。这是 Python 中基于 OpenCV FLANN 匹配的完整教程: https ://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_matcher/py_matcher.html

请注意,它基于 OpenCV 3.0.0 开发版本,但它应该很容易适应您选择的版本。

于 2013-12-14T07:10:42.930 回答