如何使用python保存libfreenect2.frame数据

时间:2019-07-11 09:04:02

标签: cython python-3.5 pickle kinect libfreenect2

我正在尝试记录kinectv2数据以解决我试图解决的图像分类问题。有什么方法可以记录kinectv2数据?

我尝试使用咸菜保存深度数据,但是由于libfreenect2库中没有Frame类的__reduce__方法,因此遇到错误。

frames = listener.waitForNewFrame()

depth = frames["depth"]

with open("captures/frame_" + str(i) + "_depth.obj", 'w') as file:
    pickle.dump(depth, file)

with open("captures/frame_" + str(i) + "_depth.obj", 'r') as file: 
    depth = pickle.load(file)

我遇到了给定的错误:

  

TypeError:由于不重要的__cinit__,所以没有默认的__reduce__

1 个答案:

答案 0 :(得分:0)

您的两个选项是:

  1. 使该类可腌制。这涉及编辑libfreenect2的Cython代码。可能最可行的方法是add a __reduce__ method,返回Frame构造函数和一个参数元组。

  2. 只需保存帧数据即可-Frame有一个asarray function可以获取一个Numpy数组,并且有很多选项可以保存。这可能是最简单的方法。当您要加载它时,只需加载Numpy数组并使用它调用框架构造函数。