sift = cv2.xfeatures2d.SIFT_create() не работает, даже если внесенный вклад

Поэтому я пытаюсь использовать:

sift = cv2.xfeatures2d.SIFT_create()

и это приходит с этой ошибкой:

cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1207: error: (-213:The function/feature is not implemented) 
This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake 
option and rebuild the library in function 'cv::xfeatures2d::SIFT::create'

Я использую Python 3.5.0 и opencv(3.4.3) и я просто использую простоя. Это произошло после того, как я попытался установить TensorFlow, и я попытался осмотреться и установил opencv-contrib-python, но я все еще получаю ту же ошибку. Заранее благодарю, и я прошу прощения, если я не включил достаточно информации

Ответ 1

У меня такая же проблема. Похоже, что SIRF и SURF больше не доступны в opencv> 3.4.2.16. Я выбрал более старую версию opencv-python и opencv-contrib-python и решил эту проблему. Вот историческая версия о opencv-python, и я использую следующий код:

pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16

Edit

Для пользователя Anaconda только это вместо пункта

conda install -c menpo opencv

это установит cv2 3.4.1 и все, что вам нужно для запуска SIFT

удачи ~

Ответ 2

Возможно, это связано с несоответствием версии opencv и версии opencv-contrib. Если вы установили opencv из источника с помощью CMake, а исходная версия отличается от версии opencv-contrib-python, удалите текущий opencv-contrib-python и выполните pip install opencv-contrib-python==<version of the source>.X или другую совместимую версию. Одна версия, которую я запускаю, - это opencv-источник (3.2), opencv-python (3.4.0.14) и opencv-contrib-python (3.4.2.17)