Funktion verwenden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PEID

hallo,

versuche gerade die Funktion "2DRotationMatrix()" aus OpenCV zu benutzen jedoch erhalte ich lediglich nur 'SyntaxError: invalid syntax' :(

Code: Alles auswählen

cv.2DRotationMatrix(center, angle, scale, map_matrix)
woran liegt dass? wegen der Zahl am Anfang von 2DRotationMatrix?

Wie kann ich nun aber doch die Funktion verwenden?

mfG
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Ich habe OpenCV noch nie verwendet aber ein Funktion die mit einer Zahl beginnt kann man erst garnicht anlegen:

Code: Alles auswählen

In [19]: def 2x():
------------------------------------------------------------
   File "<ipython console>", line 1
     def 2x():
         ^
<type 'exceptions.SyntaxError'>: invalid syntax
Teste doch mit einem ```print dir(cv)``` was es alles an möglichen Attributen gibt.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Alle Bezeichner in Python müssen mit einem Buchstaben (oder einem _) beginnen. Die Dokumentation ist in dieser Beziehung aber schlecht, denn es sieht tatsächlich so aus, als beginne der Funktionsname mit "2D". Etwas tiefer sieht es so aus, als wenn da noch ein "cv" davor stünde.

Stefan
PEID

ok, erscheint folgendes:

Code: Alles auswählen

>>> print dir(cv)
['2DRotationMatrix', ....

Code: Alles auswählen

>>> help(cv)
....
FUNCTIONS
    2DRotationMatrix(...)
        2DRotationMatrix(center, angle, scale, map_matrix) -> None
.....
@sma
für C heißt es scheinbar 'cv2DRotationMatrix()'
und für python 'cv.2DRotationMatrix()'
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Tja, dann hat da jemand falsch (automatisch) die Funktionsnamen konvertiert, denn es ist ein Syntaxfehler, wenn der Name nicht mit einem Buchstaben oder _ beginnt. Das lässt sich somit nicht direkt aufrufen.

Workaround:

Code: Alles auswählen

getattr(cv, '2DRotationMatrix')(...)
Stefan
Zuletzt geändert von sma am Samstag 7. November 2009, 09:52, insgesamt 1-mal geändert.
PEID

Super!! vielen Dank.

Code: Alles auswählen

getattr(cv, '2DRotationMatrix')(...)
es funktioniert!!! :-P
Antworten