问题标签 [truedepth-camera]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
369 浏览

ios - TrueDepth 相机前景分割,改善遮罩效果

我正在查看一个 Apple 项目,该项目演示了如何使用 TrueDepth 前置摄像头将人与背景分开。你可以在这里看到:

https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/enhancing_live_video_by_leveraging_truedepth_camera_data

它工作得很好,但有时如果我旋转我的脸,深度图会丢失一些数据点并剪辑我的脸和耳朵的一部分。您可以在此处查看该示例:https ://streamable.com/cstex

有没有人对如何改进这一点有任何想法?如果您使用AVPortraitEffectsMatte对象是完美的AVCapturePhotoOutput,但它似乎不适用于实时视频源,因为处理时间太长而无法更新帧。

我注意到 Apple 的Clips应用程序具有完美的效果,不会夹住我的任何脸或耳朵,并且提供了良好的帧率:https ://streamable.com/5n96h 因为他们的应用程序不会丢失细节,所以它不能仅仅依靠关于深度数据。或者,他们通过模型运行深度数据以改进它(可能类似于他们用来生成 AVPortraitEffectsMatte 的专有模型)

关于如何获得类似结果或他们如何实现的任何想法?

0 投票
1 回答
2401 浏览

ios - 如何从 AVDepthData 制作 3D 模型?

我对 TrueDepth Camera 的数据处理问题很感兴趣。需要获取人脸的数据,构建人脸的 3D 模型并将该模型保存在 .obj 文件中。

由于在 3D 模型中需要存在人的眼睛和牙齿,因此 ARKit / SceneKit 不适合,因为 ARKit / SceneKit 不会用数据填充这些区域。

但在 SceneKit.ModelIO 库的帮助下,我设法以 .obj 格式导出 ARSCNView.scene(SCNScene 类型)。我试图以这个项目为基础: https ://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/streaming_depth_data_from_the_truedepth_camera

在这个项目中,TrueDepth Camera 的工作是使用 Metal 完成的,但如果我没记错的话,使用 Metal 渲染的 MTKView 不是 3D 模型,不能导出为 .obj。

请告诉我是否有办法将 MTKView 导出到 SCNScene 或直接导出到 .obj?如果没有这种方法,那么如何从 AVDepthData 制作 3D 模型?

谢谢。

0 投票
0 回答
764 浏览

unity3d - 从 Unity 访问 TrueDepth

我尝试将 iPhoneX(Xs, Xr, new iPadPro) 中的 TrueDepth 数据用于 Unity App。当前用于 Unity 的 ARKit 插件似乎无法访问 TrueDepth。所以我想我需要在 Objective-c 中创建原生插件。如何创建使 Unity 能够访问 TrueDepth 的插件?只需从 iOS 获取 RGB 和 D 就足够了。

基本上,我想在与 Unity 的链接中制作类似的应用程序。 https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/streaming_depth_data_from_the_truedepth_camera

0 投票
0 回答
231 浏览

ios - iOS 12 Swift 将 TrueDepth 数据保存到视频

我一直在尝试将 TrueDepth 数据编写为快速电影。我已经检查了来自https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/streaming_depth_data_from_the_truedepth_camera的示例 我知道可以使用AVCaptureMovieFileOutput()输出快速电影,但我不知道如何实现这一点。我一直在尝试做一些简单的事情,例如将前置摄像头的捕获会话保存到快速时间。任何帮助将不胜感激。这是我到目前为止所拥有的:

0 投票
1 回答
199 浏览

ios - iOS OpenGLES上DisparityFloat16像素格式的纹理采样器值

我想在我的 OpenGLES 项目中使用 depthDataMap 作为 iPhoneX 真实深度相机的纹理。已经下载了一些 Swift 示例,似乎可以在 Metal 上创建 depthMap 并将其采样为浮动纹理。但是在 OpenGLES 上,从深度缓冲区创建深度纹理的唯一方法是,

样本值不同于从 DisparityFloat16 像素类型导出为 CIImage 的值。与 CIImage 相比,该值要低得多,并且不是线性比例。

这是 OpenGLES 中的采样值 在此处输入图像描述

这是通过代码:CIImage *image = [CIImage imageWithCVImageBuffer:depthData.depthDataMap];

在此处输入图像描述

有没有人有同样的问题?

0 投票
0 回答
726 浏览

ios - 如何在 iOS 上录制视频时保存 TrueDepth 数据?

我正在寻找一种在使用 TrueDepth 相机录制视频时将深度信息(对于每一帧)保存到文件中的方法。我找到了在拍照时保存深度数据的解决方案,而不是视频。

我目前有用于录制视频并将其保存到文件并同时捕获深度数据的代码。但是,我不知道如何保存深度数据。基本上我使用 AVCaptureSession 和 AVCaptureMovieFileOutput 来保存录制的视频。我发现深度数据是由 AVCaptureDepthDataOutput 给出的,但是如何将它保存到文件中呢?

代码的主要部分:

有任何想法吗?

0 投票
0 回答
437 浏览

ios - 从 iPhone 记录深度图作为序列

我想在IOS上创建一个可以记录和保存RGB+Depth数据的应用程序。我已经能够从双摄像头捕获数据并在屏幕上实时预览。现在我想将它保存为库中的两个序列(一个 RGB 序列和一个深度图序列)。

所以我的问题是如何将 iPhone 画廊的深度信息保存为视频或序列,同时保存 RGB 信息,以供将来进行深度处理?

我正在使用 Xcode 10.2、Swift 5 和 iPhone XS。

UI上选择的不同CIImage(图像或深度图)在屏幕上实时预览实际结果

0 投票
2 回答
971 浏览

swift - 使用 iPhone TrueDepth 传感器检测真人脸与照片?

如何使用 iPhonetrue-depth相机拍摄的深度数据来区分真实的 3D 人脸和相同的照片?要求是将其用于身份验证。

我做了什么:创建了一个示例应用程序来获取AVDepthData相机前面的内容的连续流。

0 投票
0 回答
907 浏览

swift - 如何录制 AVDepthData 视频并保存在图库中?

我正在开发一个应用程序,通过使用 DualRearCamera 或 TrueDepthCamera 在 iPhone 上记录 RGB-D 序列。我可以捕捉和可视化 RGB 帧和深度帧,我开发了一个版本,可以压缩这些数据并保存在 iPhone 的内部文件中。尽管如此,我的想法是在图库中保存两个序列(RGB 和深度图序列),但我在使用 AVAssetWritter 和创建深度图视频时遇到了问题。

我正在使用 iPhone X、Xcode 10.2.1 和 swift 5

0 投票
2 回答
1277 浏览

ios - 为什么 ARFaceAnchor 的 Z 位置为负?

我正在使用 ARKitARFaceTrackingConfiguration对齐ARConfiguration.WorldAlignment.camera,但我发现文档(似乎)并没有反映现实;

根据下面的文档摘录,我希望面部锚点transform以右手坐标系表示。但是,当我尝试移动头部时,我注意到面部锚点的 Z 坐标始终为负(即faceAnchor.transform.columns.3.z < 0)。请注意,在 X 和 Y 方向上移动头部对应于预期结果(与 Z 坐标不同)。

相机对齐根据设备相机的本机传感器方向定义坐标系。相对于一个AVCaptureVideoOrientation.landscapeRight方向的相机图像,x 轴指向右侧,y 轴指向上方,z 轴指向设备的前部(朝向用户)

我希望transform按照文档行事,即面部锚的 Z 坐标应该是正的,因为文档说“ z 轴指向设备的前面(朝向用户) ”。到目前为止,Z 轴似乎指向设备的背面……

我错过了一些明显的东西吗?

我尝试通过以下代码修复旋转,但我不确定它是否是解决此问题的正确方法: