问题标签 [avdepthdata]

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 回答
241 浏览

ios - iPhone 12 Pro 上的 AVFoundation depthData.depthDataMap 有时为空

我已经使用 AVFoundation Camera 库开发了一个自定义的 Camera ViewController,以便获取具有嵌入式深度数据的高质量图像,如此处所述https://developer.apple.com/videos/play/wwdc2017/507/

为此,我已经使用这些与深度相关的设置配置了AVCapturePhotoSettingsAVCapturePhotoOutput对象,如文档中所述:

我所取得的成就是深度捕获有效,在 jpeg 中提供了 16 位深度图,但在某些特定情况下,例如:

  • 统一的无纹理背景(例如墙壁),物体靠在上面
  • 前景主体距离双摄像头比 25/20 厘米更近

根本不生成深度图,即AVCapturePhoto对象设置了depthData对象但没有depthDataMap CVPixelBuffer 可用。结果,获得的 JPEG 没有嵌入深度数据。

有人已经遇到过这个问题吗?如果有办法解决它?

预期的行为?

正如评论中所写

[..] 深度图可能有洞。但对于静止图像 (AVCapturePhotoOutput),DualCamera 能够花费更多时间并产生更高质量的图像(高达 768x576)。与 DepthDataOutput 相比,DualCamera 对照片使用不同的(更高质量、更高延迟)算法。更高质量的视差生成是一个全有或全无的命题——它不会像实时 DepthDataOutput 算法那样产生稀疏深度。因此,它永远不会有任何孔洞,过滤和未过滤之间没有区别。[..]

这似乎是一种预期的行为,即如果系统无法生成足够好的深度图,它将不会给出任何结果,而不是生成带有标记为“孔”的某些部分的深度图,但我想要一些在确定这一点之前反馈。

0 投票
0 回答
106 浏览

ios - swift 5 是否支持从 .HEIC 图像格式中提取深度数据?

最近我正在尝试使用人像图像提取深度数据和人像效果遮罩数据。我尝试使用带有 iOS 14.3 的 iPhone 11 拍摄的肖像图像(.HEIC 格式)来做到这一点。但我无法从这些图像中提取深度数据和遮罩数据。

这是我用来从 .HEIC 格式的肖像图像中提取遮罩数据的代码片段,

func PortraitEffectsMatteImageAt(_ 路径:字符串)-> UIImage?{ 让 bundlePath = Bundle.main.bundlePath

}

该函数返回 nil 而不是返回哑光图像。那么如何从 .HEIC 格式的图像中提取遮罩数据和深度数据呢?

非常感谢

0 投票
0 回答
31 浏览

ios - 有没有办法为 IOS 的视频保存 AVDepthData?

我正在尝试制作一个 IOS 应用程序,将视频的 AVDepthData 保存为 mp4。我尝试使用 AVAssetWriter 但它不起作用(问题类似于 - https://developer.apple.com/forums/thread/685883)。我的意图是保存 RGB 和 DepthMap,然后将其从 ARKit 扩展到 SceneDepth。

0 投票
0 回答
15 浏览

ios - iOS 使用 depthData 替换图像背景

我可以通过这样做获得depthData:

然后:

然后,在捕获时:

然后,在委托中:

depthData 在那里,好的。但是现在我如何使用它来删除图像背景并替换为任何其他图像?

我发现的所有示例都只显示直到获取 depthData。任何帮助,将不胜感激。

0 投票
0 回答
6 浏览

ios - 如何设置 ARFaceTrackingConfiguration 会话的 captureDepthData 的 .isFilteringEnabled?

我可以看到您如何制作自己的捕获会话,并将您自己的 AVCaptureDepthDataOutput 添加到其中,这样您就可以访问该输出对象,因此可以在其上设置 .isFilteringEnabled 和 .alwaysDiscardsLateDepthData。

但是,我希望为 ARSCNView 运行 ARFaceTrackingConfiguration 会话,但我不知道如何访问“自动附加”到该会话的深度输出对象(如在所服务的 ARFrame 的 .capturedDepthData 中提供的那样)。我需要那个输出,所以我可以设置它的过滤状态(甚至删除它,然后添加我自己的?)。

非常感谢您提供的所有线索!