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.

16
demandé sur jabaldonedo 2011-07-17 12:40:08

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.

1
répondu ely 2013-10-11 14:04:17

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)
0
répondu memecs 2014-09-02 12:07:12

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)
0
répondu Saravanabalagi Ramachandran 2018-07-25 22:27:11