Falta surf en opencv 2.4 para python

Estoy tratando de crear una instancia de un objeto SURF en python usando OpenCV como se describe aquí pero esto sucede:

>>> 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'

¿Alguien sabe por qué sucede esto o si SURF falta en la versión Python de OpenCV?

preguntado el 22 de mayo de 12 a las 21:05

Eso funciona bien hasta 2.3.2, y los documentos dicen que también debería funcionar. ¿Qué te muestra dir(cv2)? -

1 Respuestas

Es una regresión que debería corregirse en la próxima actualización de la biblioteca.

Pero SURF no está realmente ausente. Todavía puede acceder a él a través de los contenedores genéricos:

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

Actualizar: cv2.SURF() se restaura en OpenCV 2.4.1

Respondido el 22 de junio de 12 a las 09:06

Gracias, eso funciona. ¿A qué te refieres cuando dices que es una regresión? - Cassidy Laidlaw

¿Alguien puede decirnos cuál es la diferencia entre las dos versiones (cv2.FeatureDetector_create("SURF") + cv2.DescriptorExtractor_create("SURF") frente a cv2.SURF()) esperando que la segunda versión sea más compacta? - genoveva

¿Está realmente arreglado en 2.4.1? Estoy tratando de usar 2.4.2 y veo el mismo error. - ben mccann

@AndreyKamaev: Recibo un error de segmento cuando llamo getParams() sobre el objeto resultante; ¿Cómo configuro, por ejemplo, upright a True? - jmetz

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.