C++ 读取 .oni 文件

学姐给了两个十几 G 的. oni 文件,我需要将里面的 RGB 图像拆开,逐帧保存成. png 文件。

.oni 文件是 OpenNI 导出的数据格式。OpenNI 这个东西之前是 RGBD 相机的 SKD,被 Apple 收购之后就消失了。目前官网也没有了,Github 上的 fork 也不更新了,甚至某些文件最近更改于 17 年前。

怪可惜的。

各种材料都找不到了,只有去 Github 上面猛扒拉东西了。最终找到了 这个 Demo。但是代码太长了,看不懂……

下面依旧是 Log

依赖

Linux 上面各种依赖从来都很头疼。这里我们需要安装 libopenni-dev。当然,我知道有 libopenni2-dev,网上默认下载到的就是 2.0 版本的。但是!!我不知道如何写 CMakelists.txt,就放弃使用新版了。

代码

下面的代码是基于上面找出来的代码修改的。

这里需要注意的地方是,xImageGenerator.WaitAndUpdateData();xDepthGenerator.WaitAndUpdateData(); 貌似是用于 “获取下一帧” 的。

另外有个问题:有没有更优雅的方法生成连续的文件名?我并不太想使用 C 的字符串。

CMakeLists.txt

真的,别小看这个 txt,它可是比依赖更烦人的存在。

我的工程名叫 onion

其实可以用更优雅的方式来设定 “使用 C++ 11 标准” 的。或者,我不知道有没有更优雅的方式,像使用 find_package(OpenCV) 一样加载 OpenNI 库。

结束

就到这里了。

写代码的时候,ptProjptWorld 都是 new 出来的,然后一运行,内存就蹭蹭蹭地往上彪。最后 delete 了一下才算消停。这也是第一次写内存泄漏吧。

一个新成就达成~

发表评论

电子邮件地址不会被公开。 必填项已用*标注