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 了一下才算消停。这也是第一次写内存泄漏吧。

一个新成就达成~

发表评论

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