detección de rostros iOS desde la cámara
Recibo una vista de imagen
-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = info[UIImagePickerControllerMediaType];
[self dismissViewControllerAnimated:YES completion:nil];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = info[UIImagePickerControllerOriginalImage];
//imgvprofileImage.image = image;
//[self detectForFacesInUIImage:[UIImage imageNamed:@"image00.jpg"]];
[self detectForFacesInUIImage:image];
}
else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
{
// Code here to support video if enabled
}
}
Cuando envío una foto como esta
[self detectForFacesInUIImage:[UIImage imageNamed:@"image00.jpg"]];
La detección funciona bien y encuentra una cara, pero cuando uso la imagen devuelta por la cámara no funciona.
[self detectForFacesInUIImage:image]
Esta es la función que uso para detectar la cara
-(void)detectForFacesInUIImage:(UIImage *)facePicture
{
CIImage* image = [CIImage imageWithCGImage:facePicture.CGImage];
CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:[NSDictionary dictionaryWithObject:CIDetectorAccuracyLow forKey:CIDetectorAccuracy]];
NSArray* features = [detector featuresInImage:image];
if (features.count == 0) {
NSLog(@"There is no faces in captured image ") ;
}
for(CIFaceFeature* faceObject in features)
{
CGRect modifiedFaceBounds = faceObject.bounds;
modifiedFaceBounds.origin.y = facePicture.size.height-faceObject.bounds.size.height-faceObject.bounds.origin.y;
[self addSubViewWithFrame:facePicture toRect:modifiedFaceBounds] ;
}
}