img = cv2.imread('111.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
sift = cv2.xfeatures2d.SIFT_create()
kp = sift.detect(gray,None)
print(type(kp), type(kp[0]))
# <class 'list'> <class 'cv2.KeyPoint'>
print(len(kp), kp[0].pt)
# 1525 (20.279071807861328, 251.05355834960938)
# 可以看出共有1525个sift特征,第一个特征点的坐标
des = sift.compute(gray,kp)
print(type(kp), type(des))
# <class 'list'> <class 'tuple'>
print(type(des[0]), type(des[1]))
# <class 'list'> <class 'numpy.ndarray'>
# des[0]为关键点的list,des[1]为特征向量的矩阵
print(des[1].shape)
# (1525, 128) 可以看出共有1525个sift特征,每个特征为128维
kp, des=sift.detectAndCompute(gray,None)
print(type(kp), des[1].shape)
# <class 'list'> (128,)
img = cv2.drawKeypoints(gray, kp, outImage=des[1],flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow('dst',img)
if cv2.waitKey(0) & 0xff == 27:
cv2.destroyAllWindows()
这样的图里有特征点还有方向
我想出下面的图
只有特征点引出箭头的图怎么用Python写