我正在尝试使用
VNDetectHumanBodyPose3DRequest
从我的应用程序中以 30 fps 拍摄的视频中获取 3D 关键点。由于实时请求需要很长时间,因此我使用 CMSampleBuffer
将相机中的 AVAssetWriter
保存到视频文件中。然后我在录制后处理帧。我试图通过将每个帧的 AVDepthData
合并到请求中来获得更好的结果,但我不确定如何存储深度数据以在记录后处理它们。
我无法将深度数据存储到数组中,因为它占用太多内存。我还尝试使用
CGImageDestination
将每帧保存为 HEIC 文件,并编码深度数据,但保存每帧太慢。我想我可以将每个 AVDepthData
编码为单独视频中的帧,然后将每个帧转换回来,但我不确定如何做到这一点。有谁知道解决这个问题的方法或者有任何资源可以指出我的方向吗?谢谢。
我意识到我可以使用
AVDepthData
和 Data
将每个 FileManager
中的深度映射写入磁盘上的文件。然后,在记录后,我将数据从文件读回像素缓冲区,按照here所述创建字典,并通过将字典传递到其初始化程序来重新创建AVDepthData
。