Платформа зрения iOS11, отображающая все ориентиры на лицах

Я играю с фреймворком видения и получаю все ориентиры с помощью этого кода:

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

Но не могу найти отображение для этих точек. Например, порядковые номера для правого глаза.

Ищете что-то похожее на this, но вместо этого для Vision framework.


person Berker    schedule 25.07.2017    source источник


Ответы (4)


Я понятия не имею, почему Apple не показывает это на графике. Похоже, было бы очень полезно дать людям информацию в документации. Во всяком случае, я смог прочитать свойство allPoints наблюдения и нарисовать их числами. Я не совсем уверен в разнице между носом и гребнем носа. Вы, наверное, можете их нарисовать и увидеть ...

  • Правая бровь = 0 - 3
  • Левая бровь = 4-7
  • Контур правого глаза = 8-15
  • Контур левого глаза = 16-23
  • Наружные губы = 24 - 33
  • Внутренние губы = 34 - 39
  • Контур лица = 40-50
  • Нос и гребень носа = 51 - 59
  • Линия Мейдан = 60 - 62
  • Правый ученик = 63
  • Левый зрачок = 64

Вот фото, которое, надеюсь, поможет!

точки лица

person aferriss    schedule 18.03.2018

Этот пост был очень полезен для меня, поэтому я решил, что обновлю его для 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
}

Когда я обновлял свой app Talkr до iOS 13, я не мог найти эталонное изображение для новых точек, подобных изображенному в этом посте, поэтому я подумал, что сгенерирую его. Надеюсь, это кому-то поможет!

iOS 13 Vision SDK, редакция 3, все точки

person Doug    schedule 12.09.2019

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

введите описание изображения здесь

revision3

введите описание изображения здесь

person lbsweek    schedule 05.12.2018

Надеюсь, вы уже используете класс Vision API VNDetectFaceLandmarksRequest для обнаружения черт лица.

Каждый ориентир, который мы находим, является типом VNFaceLandmarks2D

var landmarks: VNFaceLandmarks2D? { get }

Если вы проверите в документации VNFaceLandmarks2D свойства экземпляра класса, мы сможем узнать все подробности о обнаруженное лицо. Ниже приведены значения, которые мы можем получить от каждого ориентира.

  • allPoints
  • лицоКонтур
  • внутренние губы
  • левый глаз
  • слева
  • leftPubil
  • medianLine
  • нос
  • носГребень
  • Наружные губы
  • правый глаз
  • право
  • rightPubil

все они типа [VNFaceLandmarkRegion2D][2]

person Bluewings    schedule 25.07.2017
comment
спасибо за Ваш ответ. Я получаю баллы за rightEyeBrow, но он возвращает 4 балла, и мне нужно знать, какой индекс находится посередине. - person Berker; 25.07.2017
comment
Как видно из документации, точки относятся к типу VNFaceLandmarks2D и представляют собой информацию о 2D-геометрии для конкретной черты лица. каждая точка представляет собой тип vector_float2, который находится в 2D-векторе. Вы можете попробовать преобразовать его в CGPoint, чтобы выяснить центр - person Bluewings; 26.07.2017