iOS11 视觉框架映射所有面部特征点

iOS11 vision framework mapping all face landmarks

我正在玩视觉框架并使用此代码获取所有地标点:

if let allFaceLandmarks = landmarks.allPoints {
    print(allFaceLandmarks)
}

但是找不到这些点的映射。例如右眼的索引号。

正在寻找与 this 相同的东西,但要寻找 Vision 框架。

希望您已经在使用 Vision API VNDetectFaceLandmarksRequest class 检测面部特征。

我们找到的每个地标都是 VNFaceLandmarks2D

的类型
var landmarks: VNFaceLandmarks2D? { get }

如果您检查 documentationVNFaceLandmarks2D class 实例属性,我们可以找到有关检测到的面部的所有详细信息。以下是我们可以从每个地标获得的值。

  • 全部积分
  • 面部轮廓
  • 内唇
  • 左眼
  • 左眉
  • leftPubil
  • 中线
  • 鼻子
  • 鼻冠
  • 外唇
  • 右眼
  • 右眉
  • rightPubil

都是[VNFaceLandmarkRegion2D][2]

的类型

我不知道苹果为什么不提供这方面的图形。在文档中提供给人们似乎是非常有用的信息。无论如何,我能够读取观察的所有点 属性 并用数字绘制它们。我不太确定鼻子和鼻梁之间的区别。你大概可以把它们画出来看看...

  • 右眉=0 - 3
  • 左眉=4 - 7
  • 右眼轮廓 = 8 - 15
  • 左眼轮廓 = 16 - 23
  • 外唇 = 24 - 33
  • 内唇 = 34 - 39
  • 面部轮廓 = 40 - 50
  • 鼻子和鼻梁 = 51 - 59
  • 美丹线 = 60 - 62
  • 右瞳 = 63
  • 左瞳 = 64

这是一张希望对您有所帮助的照片!

lefty eyebrow   : 1~4
right eyebrow   : 5~8
left eye        : 9~16
right eye       : 17~24
outer mouth     : 25~34
inner mouth     : 35~40
left contour    : 41~45
chin            : 46
right contour   : 47~51
nose outline    : 52~60
nose crest      : 61~63
left tulip      : 64
right tulip     : 65

修订版 3

这个 post 对我非常有帮助,所以我想我会为 iOS 13 更新它(问题的原始范围是 iOS 11)。从 iOS 13 开始,您将获得一组不同的点 (VNDetectFaceLandmarksRequestRevision3),除非您手动指定 VNDetectFaceLandmarksRequestRevision2 修订版。修订参数仅在 iOS12 中可用,因此您需要这样的东西:

let faceLandmarksRequest = VNDetectFaceLandmarksRequest(completionHandler: self.myFaceFunction)

if #available(iOS 12.0, *) {
  // Force the revision to 2 (68-points) even on iOS 13 or greater 
  // when VNDetectFaceLandmarksRequestRevision3 is available. 
  faceLandmarksRequest.revision = 2
}

当我将我的应用程序 talkr 更新到 iOS 13 时,我找不到像这个 post 中的新点的参考图像,所以我想我会生成一个.我希望它能帮助别人!