TypeError:由名称('k')和位置(2)给出的参数

2024-05-12 06:20:34 发布

您现在位置:Python中文网/ 问答频道 /正文

请在下面的myopencv3Python3代码中找到匹配对象的代码,该代码会引发以下错误:

TypeError: Argument given by name ('k') and position (2)

代码如下:

import numpy as np
import cv2
import time
import distance
camera = cv2.VideoCapture(0)
sift = cv2.xfeatures2d.SIFT_create()
img = cv2.imread('/home/shar/bo.jpg')
imgTrainGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kpTrain = sift.detect(imgTrainGray,None)
kpTrain, desTrain = sift.compute(imgTrainGray, kpTrain)
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(kpTrain,desTrain,k=2)

关于如何修复它的想法?


Tags: 代码importimgsearchindexparamscv2dict
3条回答

这对我有效

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(np.asarray(des1,np.float32),np.asarray(des2,np.float32),k=2)

尝试将k作为位置参数传递:

matches = flann.knnMatch(kpTrain,desTrain,2)

您试图匹配关键点和描述符-这是错误的。您需要两个图像,首先在两个图像中找到关键点(兴趣点)。然后为每个点计算一个描述符(同样在两个图像中)。最后,使用Flann查找两个图像之间的匹配。请参见示例here

相关问题 更多 >