cython - 如何使用 python 保存 libfreenect2.Frame 数据
问题描述
我正在尝试为我要解决的图像分类问题记录 kinectv2 数据。有没有办法记录kinectv2数据?
libfreenect2
我曾尝试使用 pickle 来保存深度数据,但是由于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: no default __reduce__ 由于非平凡的 __cinit__
解决方案
您的两个选择是:
使课程可腌制。这涉及编辑 libfreenect2 的 Cython 代码。可能最可行的方法是添加一个
__reduce__
方法,返回Frame
构造函数和一个参数元组。只需保存帧数据 - 它
Frame
有一个可以获取 Numpy 数组的asarray
函数,并且有很多选项可以保存这些数据。这可能是最简单的方法。当你想加载它时,只需加载 Numpy 数组并用它调用框架构造函数。
推荐阅读
- ldap - MediWiki LDAP 无法绑定到 LDAP (-1) - 无法联系 LDAPServer
- python - QFileDialog 不解析符号链接
- .htaccess - 要删除的尾部斜杠
- c# - Azure 队列:无法读取云队列消息。AsString 和 AsBytes 属性正在抛出 System.ArgumentException
- excel - 将项目添加到集合时更改单元格颜色
- python - 如何使用现有数组创建新数组?
- django - 在django中查询时如何对每个对象进行检查?'QuerySet' 对象没有属性 'has_group_permission'
- python-2.7 - 在 jupyter 中使用 os.walk 遍历文件的脚本
- java - 多个 ExecutorService.execute() 调用。线程池。冗余?
- amazon-web-services - 通过 aws secret manager 连接数据库