You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用Vision或CIDetector识别图像中实际可见的人脸关键点?

判断Vision框架中人脸关键点的可见性

利用Vision框架自带的可见性属性

Vision框架的VNFaceLandmarkRegion2D提供了isVisible属性,可直接判断对应区域内的关键点是否实际可见。你可以遍历人脸观测结果中的各关键点区域,通过该属性获取可见性状态:

if let faceObservations = results as? [VNFaceObservation] {
    for faceObservation in faceObservations {
        // 检查左眼区域可见性
        if let leftEye = faceObservation.landmarks?.leftEye {
            print("左眼是否可见:\(leftEye.isVisible)")
        }
        
        // 检查嘴部区域可见性
        if let outerLips = faceObservation.landmarks?.outerLips {
            print("嘴部是否可见:\(outerLips.isVisible)")
        }
        
        // 检查鼻部区域可见性
        if let nose = faceObservation.landmarks?.nose {
            print("鼻部是否可见:\(nose.isVisible)")
        }
    }
}

该属性针对被遮挡的场景(比如N95口罩挡嘴、侧脸不可见的眼睛)能准确返回false,区分推测出的关键点和实际可见的关键点。

补充:精细判断单个关键点

如果需要更精准的单个关键点可见性判断,可以结合VNFaceLandmarkPoint2D的confidence属性——置信度较低的点通常是框架推测生成的,而非实际可见的关键点。

内容的提问来源于stack exchange,提问作者ElFitz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:55:25