在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
答案 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算法中测量为局部对比度)