Я использую MLKit, чтобы попытаться найти лица на фотографии, и каждый раз, когда зрительное изображение возвращается без лиц.
Это код, который я использую в настоящее время
//instantiate MLVision
lazy var vision = Vision.vision().faceDetector(options: faceDetectionOptions())
func faceDetectionOptions() -> VisionFaceDetectorOptions {
let options = VisionFaceDetectorOptions()
options.performanceMode = .accurate
options.landmarkMode = .all
options.classificationMode = .all
options.minFaceSize = CGFloat(0.1)
options.isTrackingEnabled = false
return options
}
затем я сохраняю изображение и в этом процессе я обрабатываю UIImage
func saveImage() {
let visionImage = VisionImage(image: self.canvasView!.asImage())
// begin scanning image or video
self.vision.process(visionImage, completion: { (faces, error) in
//no faces were detected
var detectedFaces = [VisionFace]()
var isSmiling = false
var smilingFaces = [Bool]()
guard error == nil, let faces = faces, !faces.isEmpty else {
return
}
for face in faces {
if face.hasSmilingProbability {
if face.smilingProbability < 0.3 {
isSmiling = false
} else {
isSmiling = true
}
}
//add smiling faces to array
if isSmiling == true {
smilingFaces.append(isSmiling)
}
//add face to faces array
detectedFaces.append(face)
}
self.contentScore.detectedFaces = detectedFaces.count
self.contentScore.smilingFaces = smilingFaces.count
// contentScore.eventAttendees = objEvent.event_users!.count
})
photoEditorDelegate?.imageEdited(image: canvasView!.asImage())
player?.pause()
self.dismiss(animated: true, completion: nil)
}
Вот функция, которая преобразует UIView в изображение
extension UIView {
// Using a function since `var image` might conflict with an existing variable
// (like on `UIImageView`)
func asImage() -> UIImage {
let renderer = UIGraphicsImageRenderer(bounds: bounds)
return renderer.image { rendererContext in
layer.render(in: rendererContext.cgContext)
}
}
Любая помощь будет высоко ценится