这里使用的是python 3.6 、opencv_python-3.4.0+contrib,特征提取的代码如下:
import cv2img = cv2.imread("feature.jpg")img = cv2.resize(img,(136 * 3,76 * 3))cv2.imshow("original",img)gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)#使用SIFTsift = cv2.xfeatures2d.SIFT_create()keypoints, descriptor = sift.detectAndCompute(gray,None)cv2.drawKeypoints(image = img,outImage = img,keypoints = keypoints,flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,color = (51,163,236))cv2.imshow("SIFT",img)#使用SURFimg = cv2.imread("feature.jpg")img = cv2.resize(img,(136 * 3,76 * 3))surf = cv2.xfeatures2d.SURF_create()keypoints, descriptor = surf.detectAndCompute(gray,None)cv2.drawKeypoints(image = img,outImage = img,keypoints = keypoints,flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,color = (51,163,236))cv2.imshow("SURF",img)img = cv2.imread("feature.jpg")img = cv2.resize(img,(136 * 3,76 * 3))cv2.waitKey(0)cv2.destroyAllWindows()
结提取果:
keypoints, descriptor = sift.detectAndCompute(gray,None),这里的descriptor是一个向量或者应该可以转换成向量