Возможности OpenCV Python и SIFT

Я знаю, что есть много вопросов о Python и OpenCV, но я не нашел справки по этой специальной теме.

Я хочу извлечь ключевые точки SIFT из изображения в OpenCV на python.

Недавно я установил OpenCV 2.3 и могу получить доступ к SURF и MSER, но не SIFT. Я не вижу ничего, связанного с SIFT в модулях python (cv и cv2) (ну, я нахожусь немного: есть 2 константы: cv2.SIFT_COMMON_PARAMS_AVERAGE_ANGLE и cv2.SIFT_COMMON_PARAMS_FIRST_ANGLE).

Это немного озадачивает меня. Связано ли это с тем, что некоторые части OpenCV находятся на C и другие на С++? Любая идея?

P.S.: Я также попытался использовать pyopencv (другое связывание python для OpenCV <= 2.1).

Ответы

Ответ 1

Вы уверены, что OpenCV разрешено поддерживать SIFT? SIFT является патентованным свойством, запатентованным в США Университетом Британской Колумбии и Дэвидом Лоу, изобретателем алгоритма. В своих исследованиях мне пришлось многократно переписывать этот алгоритм. На самом деле, некоторые исследователи видения стараются избегать SIFT и использовать другие масштабно-инвариантные модели, поскольку SIFT является собственностью.

Ответ 2

Вы можете вычислить функции SIFT с помощью привязок Python для OpenCV следующим образом:

  import cv2

  sift = cv2.SIFT()
  keypoints, descriptors = sift.detectAndCompute(imgray,None)