Core Image框架中定义了CIDetector和CUFaceFeature,它们使用起来提供了简单而强大的人脸检测功能
但是这些方法没有针对实时性进行优化,在AVFoundation中通过特定的AVCaptureOutput类型的 AVCaptureMetadataOutput也可以实现人脸检测。
当使用人脸检测时,会输出一个具体子类类型AVMetadataFaceObject。AVMetadataFaceObject 定义了多个用户描述被检测到的人脸的属性,最重要的是人脸的边界(bounds),还给出了用于定义检测人脸倾斜角(roll angle)表示人的头部向肩膀方向侧倾角度,偏转角(yaw angle)表示人脸绕y轴旋转的角度。
配置会话与之前使用摄像头拍照类似,区别在于更换一个output,如:
1 | - (BOOL)setupSessionOutputs:(NSError **)error { |
AVCaptureMetadataOutputObjectsDelegate 需要实现:
1 | - (void)captureOutput:(AVCaptureOutput *)captureOutput |
THFaceDetectionDelegate长这样:
1 | @protocol THFaceDetectionDelegate <NSObject> |
获取到AVMetadataFaceObject 后,将人脸数据可视化:
1 | - (void)didDetectFaces:(NSArray *)faces { |