【发布时间】:2014-06-18 19:35:18
【问题描述】:
我正在尝试遵循 opencv 教程 here。不幸的是,它在 flann.knnMatch(des1,des2,k=2) 处失败。这是我的代码:
import cv2
import time
import numpy as np
im1 = cv2.imread('61_a.tif')
im2 = cv2.imread('61_b.tif')
surf = cv2.SURF(500,3,4,1,0)
print "Detect and Compute"
kp1 = surf.detect(im1,None)
kp2 = surf.detect(im2,None)
des1 = surf.compute(im1,kp1)
des2 = surf.compute(im2,kp2)
MIN_MATCH_COUNT = 5
FLANN_INDEX_KDTREE = 0
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks = 50)
flann = cv2.FlannBasedMatcher(index_params,search_params)
matches = flann.knnMatch(des1,des2,k=2)
我得到错误:
matches = matcher.knnMatch(des1,des2,k=2)
TypeError: Argument given by name ('k') and position (2)
我已尝试更改匹配以镜像fix in this question,如下所示:
flann = cv2.flann_Index(des2, index_params)
matches = flann.knnMatch(des1,2,params={})
然后我得到这个错误:
flann = cv2.flann_Index(des2, index_params)
TypeError: features is not a numerical tuple
我真的不确定我做错了什么。有人可以指出我正确的方向吗?
如果您碰巧知道用于全景/拼接的 SURF 或 ORB 的工作 PYTHON 示例,这相当简单,我也将不胜感激。我已经用谷歌搜索了很多,但只找到了一些关于如何完成的操作(或者它是用 C 编写的),或者只找到了未完成/损坏的示例。
谢谢!
【问题讨论】:
标签: python opencv image-processing