使用 Sift 计算计算描述符 python
Compute descriptor with Sift compute 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)
更新
如果您已经计算出 key-points (kp
) 则将其绘制在当前图像上:
img=cv.drawKeypoints(gray,kp,img)
cv.imwrite('sift_keypoints.jpg',img)
您可以使用您喜欢的方法:
方法一:
img = cv2.imread('../input/data-for-knn/data/train/airplane/0000.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
sift = cv2.SIFT_create()
kp = sift.detect(gray,None)
desc = sift.compute(gray,kp)
方法二:
des = sift.detectAndCompute(gray,None)
我正在尝试计算给定一组 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)
更新
如果您已经计算出 key-points (kp
) 则将其绘制在当前图像上:
img=cv.drawKeypoints(gray,kp,img)
cv.imwrite('sift_keypoints.jpg',img)
您可以使用您喜欢的方法: 方法一:
img = cv2.imread('../input/data-for-knn/data/train/airplane/0000.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
sift = cv2.SIFT_create()
kp = sift.detect(gray,None)
desc = sift.compute(gray,kp)
方法二:
des = sift.detectAndCompute(gray,None)