Возможности 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)