20-SIFT算法
import cv2
import numpy as np
from matplotlib import pyplot as pltdef show_photo(name,picture):#圖像顯示函數(shù)cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()img = cv2.imread('E:\Jupyter_workspace\study\data/cfx.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)sift = cv2.xfeatures2d.SIFT_create()
kp = sift.detect(gray,None)#獲取關(guān)鍵點(diǎn)img = cv2.drawKeypoints(gray,kp,img)#繪制關(guān)鍵點(diǎn)
show_photo('drawKeypoints',img)kp, des = sift.compute(gray,kp)#一個(gè)圖 一個(gè)關(guān)鍵點(diǎn)
print(np.array(kp).shape)#關(guān)鍵點(diǎn)的數(shù)量 #結(jié)果為:(12,)
des.shape#將這些數(shù)量的關(guān)鍵點(diǎn)都轉(zhuǎn)換為一個(gè)128維的向量,沒(méi)人長(zhǎng)度就是一個(gè)128維向量 #結(jié)果為:(12, 128)
des[0]
#結(jié)果為:
'''
array([ 0., 0., 0., 0., 0., 0., 0., 1., 0.,0., 0., 0., 0., 0., 19., 11., 0., 0.,0., 0., 0., 0., 60., 8., 0., 0., 0.,0., 0., 0., 65., 7., 19., 0., 0., 0.,0., 0., 0., 10., 100., 2., 0., 5., 1.,0., 93., 149., 8., 0., 40., 36., 3., 3.,149., 64., 0., 0., 93., 13., 0., 0., 149.,26., 44., 3., 0., 0., 0., 0., 0., 1.,149., 31., 1., 18., 33., 1., 6., 30., 32.,6., 91., 141., 147., 6., 18., 10., 0., 0.,149., 38., 6., 0., 6., 1., 25., 3., 0.,0., 0., 0., 0., 0., 149., 29., 0., 0.,39., 4., 0., 0., 35., 4., 1., 5., 149.,24., 0., 0., 0., 0., 4., 2., 22., 2.,0., 0.], dtype=float32)
'''
原圖:
繪制特征點(diǎn)后的圖像:
總結(jié)
- 上一篇: 摩尔庄园手游怎么取消投掷
- 下一篇: 21-特征匹配方法(Brute-Forc