Can't use SURF, SIFT in OpenCV
There is a pip source that makes this very easy.
If you have another version of opencv-python installed use this command to remove it to avoid conflicts:
pip uninstall opencv-python
Then install the contrib version with this:
pip install opencv-contrib-python
import cv2 sift = cv2.xfeatures2d.SIFT_create()
For recent information on this issue (as of Sept 2015) consult this page.
Most information on this question here is obsolete.
What pyimagesearch is saying is that SURF/SIFT were moved to
opencv_contrib because of patent issues.
For installation there is also a nice page that tells you how to install opencv with
opencv_contrib and Python support so you get SURF/SIFT.
Notice that the API also changed. Now it's like this:
sift = cv2.xfeatures2d.SIFT_create()
Before I found the above pages, I also suffered quite a bit. But the pages listed do a very good job of helping with installation and explaining what's wrong.
FYI, as of 3.0.0 SIFT and friends are in a contrib repo located at https://github.com/Itseez/opencv_contrib and are not included with opencv by default.