如何使用openCV 3.1在python的SIFT算法中设置关键点(描述符)的数量?

如何使用openCV 3.1在python的SIFT算法中设置关键点(描述符)的数量?,python,sift,descriptor,opencv3.1,Python,Sift,Descriptor,Opencv3.1,在opencv 3.0和以前的版本中,可以使用以下代码限制SIFT中的关键点数量: kp, des = cv2.SIFT(150).detectAndCompute(pic, None) 但与opencv 3.1一样,SIFT被移动到xfeatures2d,因此该函数给出了错误 如何在SIFT opencv3.1中设置关键点的数量 我的代码是: def gen_sift_features(gray_img): sift = cv2.xfeatures2d.SIFT_create()

在opencv 3.0和以前的版本中,可以使用以下代码限制SIFT中的关键点数量:

kp, des = cv2.SIFT(150).detectAndCompute(pic, None) 
但与opencv 3.1一样,SIFT被移动到xfeatures2d,因此该函数给出了错误
如何在SIFT opencv3.1中设置关键点的数量

我的代码是:

def gen_sift_features(gray_img):
    sift = cv2.xfeatures2d.SIFT_create()
    kp, desc = sift.detectAndCompute(gray_img, None)
    return kp, desc  

可以将nfeatures参数用作:

sift = cv.xfeatures2d.SIFT_create(nfeatures=150)
这是要保留的最佳功能的数量。资料来源:

help(cv.xfeatures2d.SIFT_create)
筛选创建(…)

筛选创建([,nfeatures[,nOctaveLayers[,ContractThreshold[,edgeThreshold[,sigma*.*.*.]])->retval

@param nfeatures可保留的最佳功能的数量。这些特征是根据它们的分数排列的

。(以SIFT算法作为局部对比度测量)


可以将nfeatures参数用作:

sift = cv.xfeatures2d.SIFT_create(nfeatures=150)
这是要保留的最佳功能的数量。资料来源:

help(cv.xfeatures2d.SIFT_create)
筛选创建(…)

筛选创建([,nfeatures[,nOctaveLayers[,ContractThreshold[,edgeThreshold[,sigma*.*.*.]])->retval

@param nfeatures可保留的最佳功能的数量。这些特征是根据它们的分数排列的

。(以SIFT算法作为局部对比度测量)


detectAndCompute有一个参数用于此,nFeature,您可以设置此参数detectAndCompute有一个参数用于此,nFeature,您可以设置此参数