2017-02-10 47 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类的公共功能直接使用类和函数。