Sie können eine Liste von cv2.KeyPoints
an sift.compute
übergeben. Dieses Beispiel ist in Python, aber es zeigt das Prinzip. Ich erstelle eine Liste von cv2.KeyPoint
s durch das Scannen durch die Pixelstellen des Bildes:
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)
Sie meinen etwas wie DAISY Funktionen? Es ist in opencv 3.0, aber im externen contrib-Paket. Sie müssen es selbst kompilieren – DawidPi
@DawidPi: Ich habe opencv_contrib installiert und enthalten xfeature2d in das Projekt, konnte aber nichts wie DenseFeatureDetector finden. Dichte SIFT sind einfach SIFT-Features, die auf einem Raster in unterschiedlichem Maßstab berechnet werden. – Khue
Implementierung von DenseFeatureDetector detectImpl war wie folgt. Ich schätze, du kannst das alleine machen, aber ich schätze, ich kann dir nicht mehr helfen, da ich weder Mathematiker noch CV-Experte bin. https://github.com/Itseez/opencv/blob/2.4/modules/features2d/src/detectors.cpp#L162 – DawidPi