0

我正在尝试找到通过处理导出 PNG 序列或电影的最快方法。我正在捕获 Kinect 数据,目前,在每个绘图调用中,我正在使用:

saveFrame("output/fames####.png");

但这太慢了。有什么我能做的更快的吗?

我正在使用 simple-openni 作为 kinect 提要。

4

3 回答 3

1

您处理/编码一帧需要多长时间(以及您可以接受的时间)?您可以尝试缓冲数据并让固定数量的工作线程对其进行异步处理。否则,您将不得不求助于捕获视频,因为安装的编解码器可以使用基于硬件加速/优化 CPU 的编码。

编辑:为了吸收编码延迟,您可以使用循环缓冲区来转储需要编码的帧。然后,启动并行编码一组帧的Task 。完成后,查看缓冲区中是否有帧并处理它们。

于 2012-06-29T21:01:31.600 回答
1

您可以尝试保存为.oni 格式,并且已经有一个SimpleOpenNI 示例用于录制和播放。尽管这应该使用大量内存,但我想它可能仍然比 saveFrame() 快

使用 .oni 格式的优点是您可以轻松处理使用 SimpleOpeni 记录的节点(例如,可以在 .oni 记录上测试骨骼/手部跟踪或其他功能)。如果您需要图像,应该有提取/解析 .oni文件的方法

于 2012-06-30T22:53:59.033 回答
0

这可能为时已晚,但如果将它们保存为 tif 而不是 png,您将获得更好的性能。

于 2012-12-12T05:05:13.833 回答