2010-12-23 18 views
7

He instalado los enlaces oficiales de python para OpenCv y estoy implementando algunas funciones de libros de texto estándar solo para acostumbrarme a la sintaxis de python. Me he encontrado con el problema, sin embargo, que CvSize no existe realmente, aunque está documentado en el sitio ...CvSize ¿no existe?

La función simple: blah = cv.CvSize(inp.width/2, inp.height/2) produce el error 'module' object has no attribute 'CvSize'. He importado con 'import cv'.

¿Existe una estructura equivalente? ¿Necesito algo más? Gracias.

Respuesta

-1

¿Quizás la documentación es incorrecta y tiene que usar cv.cvSize en lugar de cv.CvSize? Además, haga un dir (cv) para descubrir los métodos disponibles para usted.

+7

Intenté todos esos. Tengo la solución, sin embargo. Parece que optaron por eventualmente evitar esta estructura por completo. En cambio, solo usa una tupla de pitón (ancho, alto). – socks

+0

@socks Otras estructuras simples como CvRect y CvScalar también se implementan con tuplas en Python. – carnieri

+1

@socks - debe escribir su solución como una respuesta, simplemente me ayudó. Vota tu pregunta de todos modos ... :) –

0

La llamada correcta es cv.cvSize (inp.width/2, inp.height/2).

Todas las funciones en los enlaces python opencv comienzan con una c en minúscula incluso en el módulo highgui.

7

Parece que optaron por evitar eventualmente esta estructura por completo. En cambio, solo usa una tupla de pitón (ancho, alto).

2

Para agregar un poco más a la respuesta de Nathan Keller, en versiones posteriores de OpenCV algunas estructuras básicas se implementan simplemente como Python Tuples.

Por ejemplo, en OpenCV 2.4:

Este (incorrecto que dará un error)

image = cv.LoadImage(sys.argv[1]); 
grayscale = cv.CreateImage(cvSize(image.width, image.height), 8, 1) 

En vez de ello puede escribir como este

image = cv.LoadImage(sys.argv[1]); 
grayscale = cv.CreateImage((image.width, image.height), 8, 1) 

Nota la forma en que sólo tiene que pasar la tupla directamente.