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

How to save libfreenect2.Frame data with python

我正在尝试为图像 class我正在尝试解决的化问题记录 kinectv2 数据。有什么办法记录kinectv2的数据吗?

我曾尝试使用 pickle 来保存深度数据,但是由于 libfreenect2 库中没有 __reduce__ 框架 class 的方法,我遇到了一个错误。

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: no default __reduce__ due to non-trivial __cinit__

您的两个选择是:

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

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