1、從初始UIImage擷取一個CIImage對象。
2、建立一個用于分析對象的CIContext。
3、通過type和options參數建立一個CIDetector執行個體。
type參數指定了要識别的特征類型。options參數可以設定識别特征的精确度,低精确度速度快,高精确度更準确。
4、建立一個圖像數組,裡面放對象的執行個體。
//self.mainImageView.image選取的圖檔
- (IBAction)findFace:(id)sender
{
UIImage * image = self.mainImageView.image;
CIImage * coreImage = [[CIImage alloc] initWithImage:image];
CIContext * context = [CIContext contextWithOptions:nil];
CIDetector * detector = [CIDetector detectorOfType:@"CIDetectorTypeFace"context:context options:[NSDictionary dictionaryWithObjectsAndKeys:@"CIDetectorAccuracyHigh", @"CIDetectorAccuracy", nil]];
NSArray * features = [detector featuresInImage:coreImage];
if ([features count] >0)
{
CIImage * faceImage = [coreImage imageByCroppingToRect:[[features lastObject] bounds]];
UIImage * face = [UIImage imageWithCGImage:[context createCGImage:faceImage fromRect:faceImage.extent]];
self.faceImageView.image = face;
[self.findFaceButton setTitle:[NSString stringWithFormat:@"%lu Face(s) Found", (unsigned long)[features count]] forState:UIControlStateNormal];
self.findFaceButton.enabled = NO;
self.findFaceButton.alpha = 0.6;
}
else
{
[self.findFaceButton setTitle:@"No Faces Found"forState:UIControlStateNormal];
self.findFaceButton.enabled = NO;
self.findFaceButton.alpha = 0.6;
}
}