问题标签 [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 投票
1 回答
1369 浏览

ios - 来自 AVDepthData 的深度图与 Photoshop 中的 HEIC 文件深度数据不同

我正在使用以下代码来提取深度图(按照 Apple 自己的示例):

我称之为:

结果如下:这是一个低质量的(并且旋转了,但我们暂时将方向放在一边)图像:

在此处输入图像描述

然后我转移了原始的 HEIC 文件,在 Photoshop 中打开,转到 Channels,然后选择深度图,如下所示:

在此处输入图像描述

结果如下:

在此处输入图像描述

这是一个分辨率/质量更高、方向正确的深度图。为什么代码(实际上是 Apple 在https://developer.apple.com/documentation/avfoundation/avdepthdata/2881221-depthdatafromdictionaryrepresent?language=objc上的代码)导致质量较低的结果?

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 投票
1 回答
987 浏览

ios - iOS 12 上的过滤深度数据似乎已旋转

我遇到了一个问题,.builtInDualCameraisFilteringEnabled = true

这是我的代码:

原始视频如下所示:(供参考)

原始视频图像

当值为:

图像看起来像这样:(你可以看到更近的夹克是白色的,更远的夹克是灰色的,距离是深灰色 - 正如预期的那样)

过滤=假,方向=纵向

当值为:

图像如下所示:(您可以看到颜色值似乎在正确的位置,但平滑过滤器中的形状似乎是旋转的)

过滤=真,方向=纵向

当值为:

图像看起来像这样:(颜色和形状都是水平的)

过滤=True,方向=Landscape_Right

我做错了什么来获得这些不正确的值吗?

我尝试重新排序代码

但这无济于事。

我认为这是与 iOS 12 相关的问题,因为我记得这在 iOS 11 下工作得很好(尽管我没有保存任何图像来证明这一点)

任何帮助表示赞赏,谢谢!

0 投票
0 回答
588 浏览

ios - 如何手动构建 AVDepthData

我想建立自己的深度图并保存图像,如带有深度信息的肖像照片。所以首先我需要生成 AVDepthData。在挖掘了它的构建方式之后,我尝试重现它:

在此之后,我得到AVDepthData了女巫,我可以保存到图像中。但此数据不包含任何附加信息,例如cameraCalibrationData. 系统生成的字典和我的字典很像。

0 投票
1 回答
537 浏览

ios - 如何创建深度数据并将其添加到图像中?

抱歉,我重复了这个问题How to build AVDepthData manual,因为它没有我想要的答案,而且我没有足够的代表在那里发表评论。如果您不介意,我可以在以后删除我的问题,并请某人将未来的答案移至该主题。

所以,我的目标是创建深度数据并将其附加到任意图像。有一篇关于如何做到这一点的文章https://developer.apple.com/documentation/avfoundation/avdepthdata/creating_auxiliary_depth_data_manually,但我不知道如何实现它的任何步骤。我不会一次发布所有问题,而是从第一个问题开始。

作为第一步,深度图像必须按像素从灰度转换为深度或视差值。我从上述主题中获取了这个片段:

然后文章说将像素缓冲区的基地址(其中是视差图)加载为 CFData 并将其作为kCGImageAuxiliaryDataInfoData值传递给 CFDictionary。但是在将 baseAddress 转换为 CFData 时出现错误。我也尝试转换像素缓冲区本身,但没有运气。我必须将什么作为 kCGImageAuxiliaryDataInfoData 传递?我是否首先正确创建了视差缓冲区?

除了这个问题,如果有人可以指导我参考一些关于如何完成整个事情的示例代码,那将是很酷的。

0 投票
1 回答
806 浏览

ios - 如何从相机图像中获取深度数据

我正在编写一个应用程序来从相机拍摄的照片中获取深度数据和视差数据。我可以得到视差数据,但不能得到它总是返回 nil 的深度数据。我需要获取深度信息并将其保存为 jpg

我已经尝试了下面的代码,用户可以在前后摄像头之间切换并拍照,然后我们拍摄的照片就是这个过程

我总是在 auxDataInfo 守卫处得到零

0 投票
0 回答
269 浏览

ios - 如何获取 AVDepthData 对象中的子像素差异

我正在开发一个快速应用程序,该应用程序应该测量站在静态安装的 iPhone 7+ 前面的人的物理正确 z 值。因此,我使用 AVDepthData 对象,其中包含来自双摄像头系统的深度图。

然而,生成的点云表明深度图不具有亚像素精度,因为点云由沿 z 方向的切片组成,并且相邻切片的距离随着深度的增加而增加。这似乎是由整数离散化引起的。

以下是可视化问题的两个文件:

捕获的深度图,在 4.0m 后裁剪 Z 值:图例中带有 Z 值的深度图

纹理点云,侧视图 (90°):从 iPhone 渲染的点云

根据 Apple 的文档,我已经停用了时间过滤并使用查找表中的失真系数对图像进行了变形,以便获得正确的世界坐标。

过滤深度数据使其在将视觉效果应用于伴随图像时更有用,但会改变数据,使其不再适用于计算机视觉任务。(在未过滤的深度图中,缺失值表示为 NaN。)

有没有办法检索具有亚像素精度的深度图,以便对站在相机前的人进行良好的测量?

您可以在下面找到我编写的用于离线创建点云的 python 代码,方法calculate_rectified_point由 Apple 提供,用于从图像中消除镜头失真。

0 投票
0 回答
249 浏览

ios - Depth capture for iPhone X back camera not working

I'm running into an issue where isDepthDataDeliveryEnabled is false for me on an iPhone X and using .builtInDualCamera.

The weird thing is that this is only happening on one specific iPhone X. I've tested on other iPhone Xs and iPhone 11s, and everything works as expected. All devices I've tested on have been running iOS 13.3.

Just wanted to see if there might be any device-specific reason why capturing depth data might not be enabled on a device.

0 投票
2 回答
393 浏览

objective-c - ARKit 深度图像素缓冲区中的黑色像素是什么?

从 ARKit 会话中获取深度像素缓冲区时,例如:

许多像素是黑色的。它们代表什么?为什么他们是黑色的?这并不能反映现实世界的真实深度。如何解释这个?

在此处输入图像描述

0 投票
0 回答
138 浏览

android - 如何在 PC Window 10 上访问 Android Emulator SD 卡文件?

使用 Andriod 模拟器,我在 Google Chrome 浏览器上从 Internet 下载了一些文件。但我不知道它在我的电脑上的位置,请帮助我,这是模拟器的详细信息

  • 名称:Nexus_5_API_28

  • CPU/ABI:谷歌 X86_ARM 玩 Intel Atom (x86)

  • 路径:C:\Users\me.android\avd\Nexus_5_API_28.avd

  • 目标:google_ndk_playstore [Google X86_ARM Play](API 级别 28)