Transformer une image en utilisant CIFaceFeature dans iOS

J'utilise CIDetector et CIFaceFeature pour détecter le visage sur la camera frontale. Essayez également de placer un chapeau sur la tête. Le chapeau est bien placé quand la tête est droite. Si je penche la tête, le chapeau devient petit et s'éloigne de la tête.

Code d'utilisation pour append le chapeau,

self.hatImgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:selectedImageName]]; self.hatImgView.contentMode = UIViewContentModeScaleAspectFit; [self.previewView addSubview:self.hatImgView]; 

Détecter le visage et le mouvement,

 - (void)detectedFaceController:(DetectFace *)controller features:(NSArray *)featuresArray forVideoBox:(CGRect)clap withPreviewBox:(CGRect)previewBox { for (CIFaceFeature *ff in featuresArray) { CGRect faceRect = [ff bounds]; //isMirrored because we are using front camera faceRect = [DetectFace convertFrame:faceRect previewBox:previewBox forVideoBox:clap isMirrored:YES]; float hat_width = self.hatImgView.image.size.width; float hat_height = self.hatImgView.image.size.height; int head_start_y = 330.0; //part of hat image is transparent int head_start_x = 60.0; float width = faceRect.size.width * (hat_width / (hat_width - head_start_x)); float height = width * hat_height/hat_width; int y = faceRect.origin.y - (height * head_start_y) / hat_height; int x = faceRect.origin.x - (head_start_x * width/hat_width); [UIView animateWithDuration:0.3 animations:^{ [self.hatImgView setTransform:CGAffineTransformRotate(CGAffineTransformIdentity, (DegreesToRadians(-ff.faceAngle)))]; self.hatImgView.frame = CGRectMake(x, y, width + 60.0f, height + 60.0f); }]; } } 

entrez la description de l'image ici entrez la description de l'image ici

Est-ce que quelqu'un sait comment transformer le chapeau avec la tête? Toutes les aides sont appréciées !!