2012-05-22 3 views
8

Я пытаюсь создать экземпляр объекта SURF в Python с использованием OpenCV, как описано here, но это происходит:Surf отсутствует в OpenCV 2.4 для питона

>>> import cv2 
>>> cv2.__version__ 
'2.4.0' 
>>> cv2.SURF() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'SURF' 

Кто-нибудь знает, почему это происходит, или если SURF отсутствует из Python версия OpenCV?

+0

Это прекрасно работает до 2.3.2, и документы говорят его также должен работать. Что показывает вам dir (cv2)? –

ответ

9

Это регрессия, которая должна быть исправлена ​​в следующем обновлении библиотеки.

Но SURF на самом деле отсутствует. Вы все еще можете получить доступ к нему с помощью общих оберток:

surf_detector = cv2.FeatureDetector_create("SURF") 
surf_descriptor = cv2.DescriptorExtractor_create("SURF") 

Update:cv2.SURF() восстанавливается в OpenCV 2.4.1

+0

Спасибо, что работает. Что вы имеете в виду, когда говорите, что это регресс? –

+0

Что-то вроде этого http://en.wikipedia.org/wiki/Software_regression –

+2

Может ли кто-то сказать нам, в чем разница между двумя версиями (cv2.FeatureDetector_create ("SURF") + cv2.DescriptorExtractor_create ("SURF") vs. cv2.SURF()) ожидает, что вторая версия более компактна? – lizzie

Смежные вопросы