È possibile passare un elenco di cv2.KeyPoints
a sift.compute
. Questo esempio è in Python, ma mostra il principio. Creo un elenco di cv2.KeyPoint
s di scansione attraverso le posizioni dei pixel dell'immagine:
import skimage.data as skid
import cv2
import pylab as plt
img = skid.lena()
gray= cv2.cvtColor(img ,cv2.COLOR_BGR2GRAY)
sift = cv2.xfeatures2d.SIFT_create()
step_size = 5
kp = [cv2.KeyPoint(x, y, step_size) for y in range(0, gray.shape[0], step_size)
for x in range(0, gray.shape[1], step_size)]
img=cv2.drawKeypoints(gray,kp, img)
plt.figure(figsize=(20,10))
plt.imshow(img)
plt.show()
dense_feat = sift.compute(gray, kp)
fonte
2015-11-13 21:55:04
Intendi qualcosa come le caratteristiche di DAISY? È in opencv 3.0 ma in un pacchetto contrib esterno. Devi compilarlo da solo – DawidPi
@DawidPi: Ho installato opencv_contrib e ho incluso xfeature2d nel progetto, ma ancora non ho trovato nulla come DenseFeatureDetector. Denso SIFT è semplicemente funzioni SIFT calcolate su una griglia su scala diversa. – Khue
Implementazione di DenseFeatureDetector detectImpl era così. Immagino che tu possa farlo da solo, ma credo di non poterti aiutare di più visto che non sono un matematico né un esperto di CV. https://github.com/Itseez/opencv/blob/2.4/modules/features2d/src/detectors.cpp#L162 – DawidPi