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

时间:2016-11-23 21:32:58

标签: 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()
    kp, desc = sift.detectAndCompute(gray_img, None)
    return kp, desc  

1 个答案:

答案 0 :(得分:0)

您可以将nfeatures参数用作:

sift = cv.xfeatures2d.SIFT_create(nfeatures=150)

这是保留的最佳功能的数量。来源:

help(cv.xfeatures2d.SIFT_create)
  

SIFT_create(...)

     

SIFT_create([,nfeatures [,nOctaveLayers [,对比度阈值[,edgeThreshold [,sigma]]]]))->检索

     
    

。 @param nfeatures保留的最佳功能的数量。功能按得分排序

         

。 (在SIFT算法中测量为局部对比度)