Я пытаюсь определить лицо пользователя как
- лицо улыбается
- Левый глаз закрыт
- Правый глаз закрыт
много других типов
но я действительно запутался, как обнаружить прыщ (темный круг) или морщину на лице пользователя.
это мой код обнаружил лицо пользователя
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, объясняющий их или некоторые примеры, которые их реализуют.
Может кто-нибудь помочь мне настроить распознавание лица
Пожалуйста, поделитесь своими идеями со мной ..
Заранее спасибо ...