2017-02-10 4 views
2

Ich möchte ein C++ - Projekt mit Cython für die Verwendung in einem Python-Code umschließen. Die Hauptklasse enthält Instanzen von anderen lokalen Klassen. Muss ich für jede verwendete Klasse pyx-Dateien schreiben oder genügt es, nur die Hauptklasse zu umhüllen?Wrapping C++ - Projekt mit Cython

Vielen Dank im Voraus!


Edit:

Hier ist der Code, den ich wickeln wollen: https://github.com/vojirt/asms/tree/master/src Ich möchte colortracker Funktion wickeln, wie andere Klassen in dieser Klasse verwendet werden, muss ich sie wickeln müssen als Gut?

+1

Ich denke, diese Frage benötigt mehr Details, um beantwortbar zu sein, aber: Sie müssen nur, was Sie aus Python verwenden möchten, umhüllen, Sie müssen Implementierungsdetails nicht umbrechen. – DavidW

+0

Was passiert, wenn die Klassen der Hauptklasse im Code verwendet werden? zum Beispiel, wenn Hauptfunktionen eine Eingabe vom Typ einer dieser anderen Klassen zurückgeben oder erhalten. –

+1

Wenn Sie Ihr Beispiel betrachten, müssten Sie wahrscheinlich 'ColorTracker',' BBox' und 'cv :: Mat' einpacken, wenn Sie die Funktionen verwenden möchten, die sie benötigen. Sie können möglicherweise ein numpy Array in eine Cv :: Mat in Cython konvertieren, anstatt eine Wrapperklasse zu verwenden. – DavidW

Antwort

1

Dank DavidW ist das Problem gelöst. Ich habe diesen Code zum Einwickeln cv :: Mat:

cdef extern from "opencv2/core/core.hpp" namespace "cv": 
    cdef cppclass Mat: 
     Mat() except + 
     void create(int, int, int) 
     void* data 

Es nur Klassen wickeln wurde benötigt und Funktionen direkt in öffentlichen Funktionen von colortracker Klasse verwendet.