我正在为一些 C++ 代码编写一些 SWIG/Python 绑定。这是针对所谓的 Kinect Accidental 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) {};
};
这是带有虚方法的监听器类,这个类的 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);
}
}
更好的选择?