使用Sift计算Python计算描述符

问题描述

给定我用 Keypoint计算的一组cv2.KeyPoint,我正在尝试计算描述符! 但是,当我尝试像这样呼叫 sift.compute()时,只是看它是否有效:

sift= cv2.SIFT()
sift.compute(img,Keypoint)

我遇到以下无法理解的错误 <method 'compute' of 'cv2.Feature2D' objects> returned NULL without setting an error

我正在使用Opencv 4.4

解决方法

如果您查看documentation

您应将SIFT声明为:

sift = cv.SIFT_create()

因此正确的代码将是:

sift = cv.SIFT_create()
kp,des = sift.detectAndCompute(gray,None)

更新

如果已经计算出关键点(kp),则将其绘制在当前图像上:

img=cv.drawKeypoints(gray,kp,img)
cv.imwrite('sift_keypoints.jpg',img)