wha*_*ick 8 c++ python swig kinect
我正在为一些C++代码编写一些SWIG/Python绑定.这是所谓的Kinect的意外API,我有电机和LED功能的工作.解析和填充RGB和深度缓冲区的Listener类的回调似乎不会从SWIG调用.数据捕获线程显然已启动并开始占用CPU,但回调中没有调试行通过.什么是更好的方法来填充数据缓冲区并从python轻松访问它们?
class KinectListener
{
public:
virtual ~KinectListener(){};
virtual void KinectDisconnected(Kinect *K) {};
virtual void DepthReceived(Kinect *K) {};
virtual void ColorReceived(Kinect *K) {};
virtual void AudioReceived(Kinect *K) {};
};
Run Code Online (Sandbox Code Playgroud)
这是带有虚方法的监听器类,这个类的Python包装版本可以用来继承c ++类的监听器吗?我在C++中添加了一个最小的监听器,现在剩下的工作是使用类型映射有效地访问数组.目前我正在使用这个天真的类型图
%typemap(out) unsigned short [ANY] {
int i;
$result = PyList_New($1_dim0);
for (i = 0; i < $1_dim0; i++) {
PyObject *o = PyInt_FromLong((long)$1[i]);
PyList_SetItem($result,i,o);
}
}
Run Code Online (Sandbox Code Playgroud)
更好的选择?
有一种方法可以使用导演功能。为您的 KinectListener 代理启用它,只需一行代码:
%feature("director") KinectListener
Run Code Online (Sandbox Code Playgroud)
然后你可以在Python代码中继承KinectListener类并定义你的函数。