title: Not able to detect face features when image from ImagePicker
body: <p>I am using <code>CoreImage</code> framework of IOS for the face detection. The sample code works fine. But when I load the image from the <code>ImagePicker</code> from the photo library, then it do not do the correct face detection.
  Here is the code I use for face detection : </p>
  
  <pre><code>-(void)openCamera
  
  {
      picker_ = [[UIImagePickerController alloc] init];
      picker_.delegate = (id)self;
      picker_.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
      picker_.wantsFullScreenLayout = YES;
      [self presentViewController:picker_ animated:YES completion:nil];
      picker_=nil;
  }
  
  - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
  
  {
      [picker dismissModalViewControllerAnimated:YES];
      imgVw_User.image =    [info objectForKey:UIImagePickerControllerOriginalImage];
      [picker dismissModalViewControllerAnimated:YES];
      [self faceDetector];
  }
  
  -(void)faceDetector
  {
      // Draw the face detection image
      [self.view addSubview:imgVw_User];
  
  //     imgVw_User.image=[UIImage imageNamed:@"73_Before_Fractional_Skin_Resurfacing.jpg"];
  
      // Execute the method used to markFaces in background
      [self performSelectorInBackground:@selector(markFaces:) withObject:imgVw_User];
  
      // flip image on y-axis to match coordinate system used by core image
      [imgVw_User setTransform:CGAffineTransformMakeScale(1, -1)];
  
      // flip the entire window to make everything right side up
      [self.view setTransform:CGAffineTransformMakeScale(1, -1)];
  }
  
  -(void)markFaces:(UIImageView *)facePicture
  {
      // draw a CI image with the previously loaded face detection picture
      CIImage* image = [CIImage imageWithCGImage:facePicture.image.CGImage];
  
      // create a face detector - since speed is not an issue we'll use a high accuracy
      // detector
      CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace
                                                context:nil options:[NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]];
  
      // create an array containing all the detected faces from the detector
      NSArray* features = [detector featuresInImage:image];
  
      // we'll iterate through every detected face.  CIFaceFeature provides us
      // with the width for the entire face, and the coordinates of each eye
      // and the mouth if detected.  Also provided are BOOL's for the eye's and
      // mouth so we can check if they already exist.
      for(CIFaceFeature* faceFeature in features)
      {
          // get the width of the face
      `CGFloat faceWidth = faceFeature.bounds.size.width;`
  
      `// create a UIView using the bounds of the face`
      `UIView* faceView = [[UIView alloc] initWithFrame:faceFeature.bounds];`
  
      // add a border around the newly created UIView
      faceView.layer.borderWidth = 1;
      faceView.layer.borderColor = [[UIColor redColor] CGColor];
  
      // add the new view to create a box around the face
      [self.view addSubview:faceView];
  
      if(faceFeature.hasLeftEyePosition)
      {
          // create a UIView with a size based on the width of the face
          UIView* leftEyeView = [[UIView alloc] initWithFrame:CGRectMake(faceFeature.leftEyePosition.x-faceWidth*0.15, faceFeature.leftEyePosition.y-faceWidth*0.15, faceWidth*0.3, faceWidth*0.3)];
          // change the background color of the eye view
          [leftEyeView setBackgroundColor:[[UIColor blueColor] colorWithAlphaComponent:0.3]];
          // set the position of the leftEyeView based on the face
          [leftEyeView setCenter:faceFeature.leftEyePosition];
          // round the corners
          leftEyeView.layer.cornerRadius = faceWidth*0.15;
          // add the view to the window
          [self.view addSubview:leftEyeView];
      }
  
      if(faceFeature.hasRightEyePosition)
      {
          // create a UIView with a size based on the width of the face
          UIView* leftEye = [[UIView alloc] initWithFrame:CGRectMake(faceFeature.rightEyePosition.x-faceWidth*0.15, faceFeature.rightEyePosition.y-faceWidth*0.15, faceWidth*0.3, faceWidth*0.3)];
          // change the background color of the eye view
          [leftEye setBackgroundColor:[[UIColor blueColor] colorWithAlphaComponent:0.3]];
          // set the position of the rightEyeView based on the face
          [leftEye setCenter:faceFeature.rightEyePosition];
          // round the corners
          leftEye.layer.cornerRadius = faceWidth*0.15;
          // add the new view to the window
          [self.view addSubview:leftEye];
      }
  
      if(faceFeature.hasMouthPosition)
      {
          // create a UIView with a size based on the width of the face
          UIView* mouth = [[UIView alloc] initWithFrame:CGRectMake(faceFeature.mouthPosition.x-faceWidth*0.2, faceFeature.mouthPosition.y-faceWidth*0.2, faceWidth*0.4, faceWidth*0.4)];
          // change the background color for the mouth to green
          [mouth setBackgroundColor:[[UIColor greenColor] colorWithAlphaComponent:0.3]];
          // set the position of the mouthView based on the face
          [mouth setCenter:faceFeature.mouthPosition];
          // round the corners
          mouth.layer.cornerRadius = faceWidth*0.2;
          // add the new view to the window
          [self.view addSubview:mouth];
      }
   }
  }
  </code></pre>
  
  <p>If I change the image which comes from the <code>imagePicker</code> to a static image within the application, i.e <code>73_Before_Fractional_Skin_Resurfacing.jpg</code> , then the detection is correct. The problem comes when the image is from the photo library, i.e from <code>ImagePicker</code>.
  Please advice..</p>