Не удается обнаружить лица с помощью MLKit - PullRequest
0 голосов
/ 02 мая 2019

Я использую 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)
    }
}

Любая помощь будет высоко ценится

...