2017-02-10 75 views
2

我想使用cython在python代碼中使用包裝一個C++項目。主類具有其他本地類的實例。我必須爲每個已經使用過的類編寫pyx文件,或者只包裝主類就足夠了嗎?使用cython包裝C++項目

預先感謝您!


編輯:

這裏是我想包裝代碼: https://github.com/vojirt/asms/tree/master/src 我想換colortracker功能,其他類使用的這個類,我需要包裝它們作爲好?

+1

我認爲這個問題需要更多的細節來回答,但是:您只需要打包您想要從Python中使用的內容,而無需包裝實現細節。 – DavidW

+0

如果代碼中使用了主類包含的類,該怎麼辦?例如,如果主函數返回或獲取其中一個類的輸入。 –

+1

看看你的例子,如果你想使用需要它們的函數,你可能必須包裝'ColorTracker','BBox'和'cv :: Mat'。你可能可以將一個numpy數組轉換成Cython中的'cv :: Mat',而不是使用包裝類。 – DavidW

回答

1

感謝DavidW,問題解決了。我用這個代碼包裝CV ::墊:

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

它是隻需要包裝在colortracker類的公共功能直接使用類和函數。