Caractéristiques d'OpenCV Python et SIFT
je sais qu'il ya beaucoup de questions à propos de Python et OpenCV mais je n'ai pas trouver de l'aide sur ce sujet particulier.
je veux extraire SIFT keypoints d'une image en Python OpenCV.
<!-J'ai récemment installé OpenCV 2.3 et je peux accéder à SURF et MSER mais pas à SIFT. Je ne vois rien de lié à SIFT dans les modules python (cv et cv2) (Eh bien je mens un peu: il y a 2 constantes:cv2.SIFT_COMMON_PARAMS_AVERAGE_ANGLE
et cv2.SIFT_COMMON_PARAMS_FIRST_ANGLE
).
cela me laisse perplexe depuis un moment. Est-ce lié au fait que certaines parties D'OpenCV sont en C et d'autres en C++? Une idée?
<!-J'ai aussi essayé pyopencv (une autre liaison python pour OpenCV <= 2.1) sans succès.3 réponses
Etes-vous sûr Qu'OpenCV est autorisé à supporter SIFT? SIFT est un type de caractéristique brevetée aux États-Unis par L'Université de la Colombie-Britannique et par David Lowe, l'inventeur de l'algorithme. Dans mes propres recherches, j'ai dû réécrire cet algorithme plusieurs fois. En fait, certains chercheurs dans le domaine de la vision tentent d'éviter le criblage et d'utiliser d'autres modèles à échelle invariante parce que le criblage est exclusif.
Vous pouvez calculer les fonctionnalités de SIFT en utilisant les fixations Python OpenCV comme suit:
import cv2
sift = cv2.SIFT()
keypoints, descriptors = sift.detectAndCompute(imgray,None)
EIPD a été brevetée et n'est pas libre pour une utilisation commerciale.
Mais si vous voulez l'utiliser à des fins pédagogiques, c'est simple:
pip install opencv-python opencv-contrib-python
et ensuite vous pouvez faire
import cv2
# Initiate SIFT detector
sift = cv2.xfeatures2d.SIFT_create()
# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img, None)