问题描述
给定我用 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)