首页 > 解决方案 > 我需要使用 iOS 人脸检测从实时视频中检测人脸,然后将每个人脸裁剪成一组人脸

问题描述

我有面部检测工作,并且可以按时间间隔在每个面部周围添加一个红色矩形。我无法解决的问题是将每个检测到的人脸裁剪成一组人脸图像。我知道检测到的面部和裁剪部分的坐标系是相反的,但无法弄清楚如何正确裁剪面部。如何从原始“capturedImage”产生的面孔中裁剪每张面孔..?

  let image = CIImage.init(cvPixelBuffer: capturedImage)
    //imgFull.image = UIImage(ciImage: image.oriented(CGImagePropertyOrientation.right).cropped(to: CGRect.init(x: 50, y: 50, width: 200, height: 200)));


    let imageOptions =  NSDictionary(object: NSNumber(value: 8) as NSNumber, forKey: CIDetectorImageOrientation as NSString)

    let options = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
    let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: options)!
    let faces = faceDetector.features(in: image, options: imageOptions as? [String : AnyObject])


    let detectFaceRequest = VNDetectFaceRectanglesRequest { (request, error) in

        DispatchQueue.main.async {

            //Loop through the resulting faces and add a red UIView on top of them.
            if let faces = request.results as? [VNFaceObservation] {
                for face in faces {

                    let faceView = UIView(frame: self.faceFrame(from: face.boundingBox))

                    let newImage: CGImage = self.convertCIImageToCGImage(inputImage: image.oriented(CGImagePropertyOrientation.right))

                    let imageRef: CGImage = (newImage.cropping(to: face.boundingBox))!
                    let croppedImage = UIImage(cgImage: imageRef)
                    self.imgFull.image = croppedImage;

标签: iosswiftface-detection

解决方案


推荐阅读