iOS开发-CIDetector识别图片中人脸功能

news/2024/7/20 22:20:30 标签: ios, cocoa, macos, 人脸识别

iOS开发-CIDetector识别图片中人脸功能

一 CIDetector是什么?

CIDetector是CoreImage框架中提供的一个识别的类,可以对人脸、形状、条码、文本进行识别。

示例代码

// 创建图形上下文
CIContext * context = [CIContext contextWithOptions:nil];
// 创建自定义参数字典
NSDictionary * param = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy];
// 创建识别器对象
CIDetector * faceDetector = [CIDetector detectorOfType:CIDetectorTypeFace context:context options:param];

二 CIDetector识别人脸

识别人脸,我们首先设置识别的属性option

NSDictionary *options = @{
            CIDetectorAccuracy:CIDetectorAccuracyHigh, // 设置检测精确度
            CIDetectorEyeBlink:@(YES), // 是否检测眨眼
            CIDetectorTracking:@(YES) // 是否追踪人脸
        };

之后识别图片中的人脸功能

代码如下

#import "SDFaceDetector.h"

@interface SDFaceDetector ()

/// CIDetector 的配置
@property (nonatomic, strong) NSMutableDictionary *detectorOptions;

/// CIDetector
@property (nonatomic, strong) CIDetector *faceDetector;

@end

@implementation SDFaceDetector

- (instancetype)init
{
    self = [super init];
    if (self) {
        
    }
    return self;
}

- (void)detectorFace:(CIImage *)ciimage {
    // 先转换成CGImage
//    CGImageRef cgImg = [image CGImage];
    // 再转换成 CIImage
//    CIImage *ciImage = [CIImage imageWithCGImage:cgImg];
    CIImage *ciImage = ciimage;
    if (!ciimage) {
        return;
    }
    NSArray<CIFeature *> *features = [self.faceDetector featuresInImage:ciImage options:self.detectorOptions];
    
    NSLog(@"features:%@", features);
    
    for (CIFeature *feature in features) {
            if ([feature isKindOfClass:CIFaceFeature.class]) {
                CIFaceFeature *faceFeature = (CIFaceFeature *)feature;
                // 判断是否检测到了嘴巴,是否检测到了左右眼,是否有追踪ID,如果在创建CIDetector 时允许了人脸追踪,则相同的人脸会有相同的trackingID。
                if (faceFeature.hasMouthPosition && faceFeature.hasLeftEyePosition && faceFeature.hasRightEyePosition && faceFeature.hasTrackingID) {
                  // faceFeature.bounds 属性保存了人脸的位置信息。
                 // 处理图像,处理图像的部分,比如裁剪和缩放灰度等,ios原生也能处理,你也可以选择用Opencv处理。
                }
            }
    }
}

#pragma mark - Lazy
- (NSMutableDictionary *)detectorOptions {
    if (!_detectorOptions) {
        NSDictionary *options = @{
            CIDetectorAccuracy:CIDetectorAccuracyHigh, // 设置检测精确度
            CIDetectorEyeBlink:@(YES), // 是否检测眨眼
            CIDetectorTracking:@(YES) // 是否追踪人脸
        };
        _detectorOptions = [NSMutableDictionary dictionaryWithDictionary:options];
    }
    return _detectorOptions;
}

- (CIDetector *)faceDetector {
    if (!_faceDetector) {
        _faceDetector = [CIDetector detectorOfType:CIDetectorTypeFace context: nil options:self.detectorOptions];;
    }
    return _faceDetector;
}

@end

三、小结

iOS开发-CIDetector识别图片中人脸功能。
CIDetector是CoreImage框架中提供的一个识别的类,可以对人脸、形状、条码、文本进行识别。

学习记录,每天不停进步。


http://www.niftyadmin.cn/n/4925871.html

相关文章

DCMM数据管理成熟度之数据战略-数据战略规划

需要咨询加 &#xff1a;shuirunjj 标准原文 1概述 数据战略规划是在所有利益相关者之间达成共识的结果。从宏观及微观两个层面确定开展数据管理及应用的动因,并综合反映数据提供方和消费方的需求。 2 过程描述 过程描述如下: a) 识别利益相关者,明确利益相关者的需求; …

zadig安装驱动潜在风险与解决策略

zadig安装驱动潜在风险与解决策略 ✨没事不要闲着乱打驱动&#xff0c;能正常使用的情况下&#xff0c;不要轻易或随意去乱打驱动&#xff0c;可能会导致新的驱动对已有的设备不兼容的问题。✨&#x1f530;特别说明&#xff1a;本文介绍的方法&#xff0c;并不能包治百病&…

Java 延时队列,简单使用方式

Java 延时队列&#xff0c;简单使用方式 前言&#xff1a;首先我们要知道延时队列是什么&#xff1f;可以用来干什么&#xff1f; 是什么&#xff1f; 看名称 队列可想而知先进先出的一个集合。但我们的延时队列并没有完全的遵循这个理念。 DelayQueue内部其实是基于我们的优…

计算机视觉的应用9-视觉领域中的61个经典数据集【大集合】的应用与实战

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用9-视觉领域中的61个经典数据集【大集合】的应用与实战,我们都知道计算机视觉是一门研究如何使计算机能够理解和解释数字图像或视频的技术和方法。在计算机视觉领域中,数据集是非常重要的资源,它们可以用于训练和评估…

Git详解及使用

Git简介 Git 是一种分布式版本控制系统&#xff0c;它可以不受网络连接的限制&#xff0c;加上其它众多优点&#xff0c;目前已经成为程序开发人员做项目版本管理时的首选&#xff0c;非开发人员也可以用 Git 来做自己的文档版本管理工具。 大概是大二的时候开始接触和使用Gi…

Unity游戏源码分享-仿开心消消乐Match3Jewel

Unity游戏源码分享-仿开心消消乐Match3Jewel 工程地址&#xff1a; https://download.csdn.net/download/Highning0007/88198762

【Windows10下启动RocketMQ报错:找不到或无法加载主类 Files\Java\jdk1.8.0_301\lib\dt.jar】解决方法

Windows10下启动RocketMQ报错&#xff1a;找不到或无法加载主类 一、问题产生二、产生原因三、解决办法 一、问题产生 参考RocketMQ Github官网上的说明&#xff0c;下载rocketmq-all-5.1.3-bin-release.zip&#xff0c;解压配置环境变量后&#xff0c;执行如下命令&#xff1a…

虹科新闻 | 虹科与Power-MI正式建立合作伙伴关系

近日&#xff0c;虹科与Power-MI正式建立合作伙伴关系&#xff0c;双方就工业预测性维护领域进行深入的交流与合作&#xff0c;未来将共同致力于为亚洲市场提供完整的、更高质量的预测性维护解决方案&#xff0c;解决亚洲客户的工业自动化挑战。 虹科与Power-MI都表示十分期待…