python 返回函数对象_python – 从c函数Cython返回包含PyObject的复杂对象

我试图使用Cython将一些C类和函数包装到

Python中.

到目前为止,我已经包装了2个类,现在我想要包装一个函数.

函数的签名是

std :: map< std :: string,std :: vector< PyObject *>> analyze(PyObject * img,LandmarkDetector :: CLNF& clnf_model,LandmarkDetector :: FaceModelParameters& params);

我已经成功包装了CLNF和FaceModelParameters类,并且我无法包装此分析函数.

该函数处理PyObject *,因为它处理opencv,我希望能够在语言之间轻松传递它们.我使用these functions来执行cv :: Point到python对象之间以及python Mat到cv :: Mat之间的转换.

这是我的pyx文件:

from libcpp.vector cimport vector

from libcpp.map cimport map

from libcpp.string cimport string

from cpython.ref cimport PyObject

from cython.operator cimport dereference as deref

cdef extern from "LandmarkDetectorModel.h" namespace "LandmarkDetector":

cdef cppclass CLNF:

CLNF(string) except +

cdef extern from "LandmarkDetectorParameters.h" namespace "LandmarkDetector":

cdef cppclass FaceModelParameters:

FaceModelParameters(vector[string] &) except +

cdef class PyCLNF:

cdef CLNF *thisptr

def __cinit__(self, arg):

self.thisptr = new CLNF( arg)

cdef class PyLandmarkDetectorParameters:

cdef FaceModelParameters *thisptr

def __cinit__(self, args):

self.thisptr = new FaceModelParameters(args)

cdef extern from "FaceLandmarkVid.h":

map[string, vector[object]] analyze(object, CLNF&, FaceModelParameters&)

cdef PyAnalyze(object img, PyCLNF clnf, PyLandmarkDetectorParameters facemodel):

return analyze(img, deref(clnf.thisptr), deref(facemodel.thisptr))

但在尝试编译它时,我收到错误消息

landmarks.pyx:26:23: Python object type 'Python object' cannot be used as a template argument

(指的是线图[string,vector [object]] analyze […])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值