美文网首页swift
CoreImage 人脸检测

CoreImage 人脸检测

作者: 秋叶红90 | 来源:发表于2020-05-19 17:19 被阅读0次

首先需要导入

import CoreImage

添加一个人脸图片 展示在viewController的self.imgView上
然后

func detect() {
        let personPic:UIImageView! = self.imgView
        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)
        
        // 将 Core Image 坐标转换成 UIView 坐标
        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)")
            
            // 实现坐标转换
            var faceViewBounds = face.bounds.applying(transform)
            
            // 计算实际的位置和大小
            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)
            
            self.imgView_top.constant = faceViewBounds.origin.y - 102*self.imgView.height/CGFloat(300)
            self.imgView_left.constant = faceViewBounds.origin.x - 63*self.imgView.width/CGFloat(375)
            
            
            
            if face.hasLeftEyePosition {
                print("Left eye bounds are \(face.leftEyePosition)")
            }
            
            if face.hasRightEyePosition {
                print("Right eye bounds are \(face.rightEyePosition)")
            }
        }
    }

此方法还可以检测文字 和 长方形,等功能

相关文章

  • CoreImage 人脸检测

    首先需要导入 添加一个人脸图片 展示在viewController的self.imgView上然后 此方法还可以检...

  • CoreImage系列二:人脸检测

    这是CoreImage系列的第二章,主要有三点 1.对静态图片进行人脸检测与打马赛克2.对摄像头录像进行人脸检测与...

  • iOS基于CoreImage实现人脸检测(附上demo)

    本文介绍了iOS基于CoreImage的CIDetector进行人脸检测, 并附上相关demo。 demo 展示效...

  • iOS开发之CoreImage框架使用(下)

    二、使用CoreImage实现人脸识别 人脸识别是目前非常热门的一种图像处理技术,CoreImage内置了对人脸进...

  • iOS人脸识别(检测)

    iOS的CoreImage已经内建了人脸检测的接口,检测准确率一般,尤其是侧脸,基本上就检测不到。不过跟其他同类产...

  • CoreImage人脸识别

    1.首先要导入CoreImage.framework框架2.引入头文...

  • 人脸识别技术

    人脸识别技术 (一) —— 基于CoreImage实现对静止图片中人脸的识别人脸识别技术 (二) —— 基于Cor...

  • MTCNN

      人脸任务总体上分为:人脸检测、人脸关键点检测、人脸判别、人脸识别、人脸聚类等。  作者认为人脸检测和人脸关键点...

  • iOS人脸识别调研

    1、系统的人脸识别 ​ 使用CoreImage里面的CIFaceFeature ​ 可以实现图片的人...

  • 了解人脸识别和二维码识别

    人脸识别方案 CoreImage (二维码识别,人脸识别) face++ 2014阿里 收费(两种方案本地计算 ...

网友评论

    本文标题:CoreImage 人脸检测

    本文链接:https://www.haomeiwen.com/subject/kqobohtx.html