функция распознавания лица swift - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь определить лицо пользователя как

  • лицо улыбается
  • Левый глаз закрыт
  • Правый глаз закрыт

много других типов но я действительно запутался, как обнаружить прыщ (темный круг) или морщину на лице пользователя. это мой код обнаружил лицо пользователя

func detect() {
    guard let personciImage = CIImage(image: personPic.image!) else {
        return
}
    let accuracy = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
    let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: accuracy)
    let faces = faceDetector?.features(in: personciImage)

    // Convert Core Image Coordinate to UIView Coordinate
    let ciImageSize = personciImage.extent.size
    var transform = CGAffineTransform(scaleX: 1, y: -1)
    transform = transform.translatedBy(x: 0, y: -ciImageSize.height)

for face in faces as! [CIFaceFeature] {
        print("Found bounds are\(face.bounds)")

        // Apply the transform to convert the coordinates
        var faceViewBounds = face.bounds.applying(transform)

        // Calculate the actual position and size of the rectangle in the image view
        let viewSize = personPic.bounds.size
        let scale = min(viewSize.width / ciImageSize.width,
                        viewSize.height / ciImageSize.height)
        let offsetX = (viewSize.width - ciImageSize.width * scale) / 2
        let offsetY = (viewSize.height - ciImageSize.height * scale) / 2

     faceViewBounds = faceViewBounds.applying(CGAffineTransform(scaleX: scale, y: scale))
        faceViewBounds.origin.x += offsetX
        faceViewBounds.origin.y += offsetY

        let faceBox = UIView(frame: faceViewBounds)
        faceBox.layer.borderWidth = 3
        faceBox.layer.borderColor = UIColor.red.cgColor
        faceBox.backgroundColor = UIColor.clear
        personPic.addSubview(faceBox)

    // Output
    print("1. hasMouthPosition \(face.hasMouthPosition)")
    print("2. face is smiling \(face.hasSmile)")
    print("3. Left eye bounds are \(face.leftEyePosition)")
    print("4. Right eye bounds are \(face.rightEyePosition)")
    print("5. hasFaceAngle \(face.hasFaceAngle)")
    print("6. hasTrackingFrameCount \(face.hasTrackingFrameCount)")
    print("7. hasTrackingID \(face.hasTrackingID)")
    print("8. leftEyeClosed \(face.leftEyeClosed)")
    print("9. rightEyeClosed \(face.rightEyeClosed)")
   }
}

Есть ли хорошо известные алгоритмы? Было бы здорово, если есть какой-нибудь быстрый sdk, объясняющий их или некоторые примеры, которые их реализуют.

Может кто-нибудь помочь мне настроить распознавание лица

Пожалуйста, поделитесь своими идеями со мной ..

Заранее спасибо ...

...