- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们商店中有几款应用使用 ARFaceTrackingConfiguration
在配备 FaceID 摄像头的 iOS 设备中检测用户的脸部。
正如您可能已经看到的,ARKit 还会跟踪您放在 iPad Pro/iPhoneX 前的面孔图片,就像它们是面孔一样。例如。从 our apps 之一拍摄一张照片(要复制可以下载并运行 Apples example app for ARFaceTrackingConfiguration ):
现在我注意到 ARKit 内部对待真实面孔的方式与对待面孔图片的方式不同。因为通常(对于 ARWorldTrackingConfiguration
和 ARFaceTrackingConfiguration
)ARKit
会尝试匹配真实世界尺寸和虚拟对象尺寸,即 10x10cm 的对象在您的 3D 编辑软件中将匹配相同 10x10cm 的现实世界对象。但是,当使用面部跟踪时,并且手机检测到异常尺寸的面部(如上图所示的 4 厘米宽的小脸或面部大得多的人的海报),它会缩放 FaceGeometry,就好像检测到的面部是正常尺寸的头部,即头部宽度的测量值约为 14 厘米。然后,所有虚拟对象都将相应地缩放,这将导致现实世界中的尺寸错误。 C.f.下一张图片:
眼镜 3D 模型宽约 14 厘米,但仅以 4 厘米的物体形式呈现。
相比之下,如果你把眼镜戴在真实的3D脸上,它们的尺寸是正确的,戴在小人的头上(比如12厘米),它们会稍微太大,戴在大人的头上(比如16厘米),它们会有点大。会稍微太小(因为在这两种情况下它们都是真实的 14 厘米)。
我什至可以看到 ARKit 在以下之间切换:
当您将婴儿抱在应用程序前面时,这一点尤其明显。对于婴儿的头部,ARKit
首先会尝试放大所有内容,使虚拟场景中婴儿的头部宽 14 厘米,并且眼镜适合成人的佩戴。然后,通常在头部出现在摄像头中 1-2 秒后,ARFaceTrackingConfiguration
将从模式(1)切换到模式(2)并显示3D 对象的真实尺寸,这会导致戴着成人尺寸眼镜的小婴儿头的超可爱照片(此处未显示,因为 SO 不适用于分享婴儿照片)。
有没有办法确定ARKit是处于模式1还是2?
最佳答案
目前 ARKit 3.0 API 中还没有办法做到这一点。
ARKit session's
ARFaceTrackingConfiguration
is constantly getting data from motion sensors at1000 Hz
, from front RGB camera at60 Hz
, and from IR camera at15 Hz
. And TrueDepth sensor is working while the session is running. You can't manually stop TrueDepth sensor in ARKit.
ARFaceTrackingConfiguration
中的工作距离约为15...100 cm
,因此您可以在 ARKit 3.0 中有效检测最多 3 个人脸在那个距离内。但 ARKit 人脸检测存在一些逻辑错误——你可以在跟踪身后海报上的大脸的同时跟踪你的脸(但海报上的脸是平的,因为它具有等距深度)。因此,规范掩码的比例取决于检测到的面部的大小(如您之前所说),但 ARKit 无法立即调整该规范掩码 (ARFaceGeometry) 的比例,因为面部跟踪非常占用 CPU 资源。
Apple 的 TrueDepth 模块的工作距离范围非常窄,因为来自红外投影仪的 30K 点必须具有明确的亮度、模糊度、覆盖范围和点大小才能被 ARKit 有效使用。
使用此代码,您可以测试 TrueDepth 模块是否参与进程:
@available(iOS 13.0, *)
class ViewController: UIViewController {
@IBOutlet var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
sceneView.session.delegate = self
}
}
extension ViewController: ARSessionDelegate {
func session(_ session: ARSession, didUpdate frame: ARFrame) {
print(sceneView.session.currentFrame?.capturedDepthData?.depthDataQuality as Any)
}
}
通常,每第四帧打印一次深度数据(但有时间隙大于 4 帧):
只有一种情况 TrueDepth 传感器不会贡献 RGB 数据:当您将智能手机移得太靠近海报或太靠近您的脸时 – 因此您只会看到 nils
正在打印。
关于ios - ARFaceTracking配置: How to distinguish pictures from real faces?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59581361/
我在决定是将我的应用程序归类为“实时”还是“接近实时”,或者甚至是其他类别时遇到了麻烦。 该软件会立即接收从源生成的数据,然后根据某些规则,在满足某些条件时发出警报。它采用每 30 秒检查一次最近 3
我的 c 编译器有问题当编译一个简单的hello world时,用户时间是>>>实时的。 这里是两台机器之间的时间比较。 需要注意的是,机器没有执行任何其他任务,其他操作运行得很快(甚至是其他编译器)
虽然我用 C 实现了很多项目,但我对操作系统完全陌生。我在探索板 (STM32) 上尝试了实时 linux,并得到了 LED 闪烁的正确结果,但我并没有真正理解整个过程,因为我只是按照步骤操作,无法在
我的问题是,“可以使用 select type block 来区分 real::realInput 和 real::realArrayInput(:) ?”很清楚 select type 可以如何用于
通过 fortran-iso-c-binding,我可以连接 C 函数并获取类似类型的变量 real(c_float) integer(c_int) 但在程序的其余部分我想使用基本类型(仅仅是因为我不
我正在编写一个应用程序,在某个 block 中我需要对实数取幂大约 3*500*500 次。当我使用 exp(y*log(x)) 算法时,程序明显滞后。如果我使用另一种基于处理数据类型的算法,速度会快
我目前在 science linux 6 下使用 gfortran 4.4.7 编译器。我需要用 128 位声明变量。我无法更改操作系统希望在science linux 6下能做一些事情。 最佳答案
当我在 .NET 中将进程的优先级设置为实时时: Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;
我正在使用 Accelerate Framework 在 iOS 中实现基于加速度计的 FFT,但我仍然有点困惑的是这一部分: /* The output signal is now in a spl
用 f(x::Real) 定义函数有什么区别吗?和 f{T <: Real}(x::T) ? @code_warntype给出相同的输出 function f(x::Real) x^2 end
所以我看到了these two questions on twitter . 1.real 是语法错误,而 1 .real 不是? >>> 1.real File "", line 1 1
我有这个简单的代码,它使用 DGEMM 例程进行矩阵乘法 program check implicit none real(8),dimension(2,2)::A,B,C A(1,1)=
如标题所示,我使用了 Media Foundation WavSink 示例,该示例将音频流解码为 PCM 并转储到文件。 我的应用程序是将此流定向到 FMOD 音频引擎,该引擎以实时速率使用 PCM
1) 独占时间是在方法中花费的时间2) 包含时间是在方法中花费的时间加上在任何被调用函数中花费的时间3)我们称调用方法为“ parent ”,称方法为“子”。引用链接:Click here 这里的问题
我正在尝试使用 PS3 Eye 实时执行到达时间差。由于它内置了4个麦克风阵列,我成功地将阵列重新排列成方形阵列,并使用MATLAB对信号进行互相关,得到了一个相对准确的TDOA算法。然而,到目前为止
我开始改进一些旧的 R 代码,发现下一个函数是 deprecated : real创建指定长度的 double 向量。向量的每个元素都等于 0。 as.real试图将其参数强制为 double 类型。
因此,得出以下结论:实时异常检测的定义是什么? 我正在研究异常检测领域,在许多论文中,该方法被定义为实时,而在许多其他论文中,它简称为异常检测。 我碰巧发现,纠正我是否我错了,大多数所谓的实时方法实际
查看所有现有的操作转换框架示例,它们似乎都解决了将更改转换为纯文本文档的问题。 OT 框架如何用于更复杂的对象? 我想开发一个实时便签样式的应用程序,人们可以在其中共同创建便签,更改他们的位置和文本值
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以使为on-topic。 4
我有大量的点数据流(二维)(每秒数千个)。在这张 map 上,我有几个固定的多边形(几十到几百个)。 我想实时确定(在相当强大的笔记本电脑上几毫秒的数量级)它所在的多边形(多边形可以相交)的每个点。我
我是一名优秀的程序员,十分优秀!