2013-02-24 3 views
1

주어진 이미지에서 얼굴/여러 얼굴을 자르고 다른 용도로 자른 얼굴 이미지를 사용해야합니다. CoreImage에서 CIDetectorTypeFace를 사용하고 있습니다. 문제는 머리카락이 잘 리거나 아래턱이 잘리는 것처럼 감지 된 얼굴 만 들어있는 새로운 UIImage가 더 커야한다는 것입니다. 어떻게하면 initWithFrame:faceFeature.bounds의 크기를 늘릴 수 있습니까 ?? 내가 사용하고 샘플 코드 :CoreImage를 사용하여 얼굴 잘라 내기

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); 
    } 

참고 : 내가-하지 않는 전혀 잘린 이미지와 일치 검출 된 얼굴 영역을 보여주기 위해 만든 빨간색 프레임. 어쩌면 프레임을 올바르게 표시하지는 않지만 프레임을 표시 할 필요가 없기 때문에 자른 얼굴이 필요합니다. 걱정하지 않아도됩니다.

답변

4

확실하지,하지만 당신은

CGRect biggerRectangle = CGRectInset(faceFeature.bounds, someNegativeCGFloatToIncreaseSizeForXAxis, someNegativeCGFloatToIncreaseSizeForYAxis); 
CGImageRef imageRef = CGImageCreateWithImageInRect([staticBG.image CGImage], biggerRectangle); 

https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html#//apple_ref/c/func/CGRectInset

+0

덕분에 많이 시도해 볼 수도 있습니다 ... 그것은했다! 또한 CGRectOffset을 사용하여 좀 더 정확 해졌습니다. :) – Soumyajit

+0

당신을 환영합니다! 해답이 문제를 해결 한 경우이를 허용 된 것으로 표시하는 것을 고려하십시오 (왼쪽의 체크 표시). – blub