Мне нужно вырезать лицо/несколько лиц из данного изображения и использовать обрезанное изображение лица для других целей. Я использую CIDetectorTypeFace от CoreImage. Проблема заключается в том, что новый UIImage, содержащий только обнаруженное лицо, должен быть больше по размеру, так как волосы обрезаны или отрезана нижняя челюсть. Как увеличить размер initWithFrame:faceFeature.bounds
?? Пример кода, который я использую:
CIImage* image = [CIImage imageWithCGImage:staticBG.image.CGImage];
CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace
context:nil options:[NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]];
NSArray* features = [detector featuresInImage:image];
for(CIFaceFeature* faceFeature in features)
{
UIView* faceView = [[UIView alloc] initWithFrame:faceFeature.bounds];
faceView.layer.borderWidth = 1;
faceView.layer.borderColor = [[UIColor redColor] CGColor];
[staticBG addSubview:faceView];
// cropping the face
CGImageRef imageRef = CGImageCreateWithImageInRect([staticBG.image CGImage], faceFeature.bounds);
[resultView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);
}
Примечание. Красная рамка, которую я сделал, чтобы показать обнаруженную область лица, совсем не совпадает с обрезанным изображением. Может быть, я неправильно показываю рамку, но поскольку мне не нужно показывать рамку, мне действительно нужно обрезанное лицо, я не слишком беспокоюсь об этом.