swift - ARKit – 如何检测场景视图中特定特征点的颜色?
问题描述
我想在场景视图中的特定特征点获取检测到的世界对象的颜色。例如,我在 处检测到一个特征点(x:10, y:10, z:10)
。
如何在这个位置获得object
/的颜色surface
?
解决方案
目前,使用 ARKit 方法无法在特征点下获取真实世界对象的颜色(与您在许多合成应用程序中看到的方式相同)。没有 ARKit 方法允许您将Alpha
一个特征点乘以RGB
视频流中相应像素的值。
.showFeaturePoints
是 ARSCNView 的扩展调试选项ARSCNDebugOptions
。此选项仅允许您显示世界中检测到的 3D 特征点。
@available(iOS 11.0, *)
public static let showFeaturePoints: SCNDebugOptions
但我确信您可以尝试将 CIFilter 应用于包含特征点的 ARKit 相机源。
场景中的特征点是黄色的,因此您可以使用Chroma Key Effect提取 Alpha 通道。然后你需要将这个 Alpha 乘以来自相机的 RGB。所以你会得到color-coded
特征点。
您也可以使用Core Image Compositing OperationsCIDifferenceBlendMode
中的操作。你需要两个来源——一个有特征点,另一个没有特征点。然后你必须修改这个Difference op的结果,并在乘法之前将它分配给Alpha通道。