2012-04-05 7 views
1

Ich nehme Bilder von der Kamera (unter Verwendung von UIImagePickerController) und speichere sie im Dokumentverzeichnis.Das Bild wird nicht erkannt, wenn es von der Kamera genommen wird. Verwenden von UIImagePickerControllerSourceTypeCamera

Dann hole ich diese Bilder in einem anderen View-Controller, um das Gesichtsteil mit CIDetector API und CIfacefeature API zu erhalten.

Das Problem ist, es erkennt das Gesicht überhaupt nicht, obwohl ich in der Lage bin, die Bilder richtig zu holen. Und wenn ich das gleiche Bild im Hauptbündel ablege, erkennt es.

Ich weiß nicht, wo das Problem ist ??. Ich habe alles versucht. Kann sein, das Problem ist mit der UIImage oder kann das Format, in dem Bild wird im Dokumentenverzeichnis oder mit der Kamera gespeichert werden.

Bitte helfen. Ich werde dir dankbar sein.

- (void) imagePickerController:(UIImagePickerController *)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString* path = [documentsDirectory stringByAppendingPathComponent: 
         [NSString stringWithString: @"SampleImage.jpg"] ]; 
    NSData* data = UIImageJPEGRepresentation(image, 0); 
    [data writeToFile:path atomically:YES]; 
    [picker dismissModalViewControllerAnimated:YES]; 
    FCVC *fcvc = [[FCVC alloc] initwithImage:image]; 

    [self.navigationController pushViewController:fcvc animated:YES]; 
} 

In der ViewDidLoad von FCVc I unten Funktion, indem nenne:

-(void)markFaces:(UIImage *)pic 
{ 
    CIImage* image = [CIImage imageWithCGImage:pic.CGImage]; 
    CGImageRef masterFaceImage; 

    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]; 
    for(CIFaceFeature* faceFeature in features) 
    {  
     masterFaceImage = CGImageCreateWithImageInRect(facePicture.CGImage,CGRectMake(faceFeature.bounds.origin.x,faceFeature.bounds.origin.y, faceFeature.bounds.size.width,faceFeature.bounds.size.height)); 
    } 
    self.masterExtractedFace = [UIImage imageWithCGImage:masterFaceImage]; 
} 

Vielen Dank im Voraus.

Antwort

1

Eine einfache Lösung für dieses, wenn Sie die Kamera immer im Hochformat verwenden, ist dieses kleine Schnipsel hinzuzufügen:

NSDictionary* imageOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:6] forKey:CIDetectorImageOrientation]; 
NSArray* features = [detector featuresInImage:image options:imageOptions]; 

Um herauszufinden, welche Ausrichtung Sie in sind, wenn Sie es brauchen, um dynamisch Finde deine Orientierung heraus.

Check kCGImagePropertyOrientation

+0

Wie kann ich erkennen, das Bild in LandScapeMode – siva

+0

Check kCGImagePropertyOrientation – sai

Verwandte Themen