Search code examples
pythonopencvcomputer-visionsurfobject-detection

Python bindings for OpenCV with AttributeError: 'module' object has no attribute 'FeatureDetector_create'


I am using the python bindings for OpenCV 2.4.X and OpenCV 3.1 but with the following simple two-liner

import cv2
detector = cv2.FeatureDetector_create("SURF")

I get the following output:

Traceback (most recent call last):
   File "version_test.py", line 3, in <module>
    detector = cv2.FeatureDetector_create("SURF")
AttributeError: 'module' object has no attribute 'FeatureDetector_create'

What are the reasons for this error in each version?


Solution

  • It seemed that I need opencv-devel and opencv-debuginfo (rpm/deb) packages as well for the 2.4.X version.

    Regarding the 3.1 version, these functions have been removed in favor of functions like

    detector = cv2.TYPE_create()
    

    where TYPE can be ORB or other detector of your choosing but not SURF and SIFT which have been moved to a nonfree package. For more info check this source.