Gesichtserkennung über Kamera funktioniert nicht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Gesichtserkennung über Kamera funktioniert nicht

    Guten Tag,
    ich bin am verzweifeln:
    Ich möchte eine Gesichtserkennung von einen über die Kamera auf genommenen Bild machen. Nur leider wir nie etwas erkannt. Wenn ich dann die Gesichtserkennung aber mit einen abgespeicherten Bild ausprobiere funktioniert diese. Was kann ich tun? Hier mein Quelltext:

    View Controller.h:

    Quellcode

    1. #import <UIKit/UIKit.h>
    2. #import <MobileCoreServices/MobileCoreServices.h>
    3. @interface ViewController : UIViewController
    4. <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
    5. {
    6. UIImageView *cameraView;
    7. BOOL newMedia;
    8. }
    9. @property (strong, nonatomic) IBOutlet UIImageView *cameraView;
    10. @property (strong, nonatomic) IBOutlet UILabel *lbMouth;
    11. @property (strong, nonatomic) CIImage *cImage;
    12. - (IBAction)cameraClicked:(id)sender;
    13. - (IBAction)analysePicture:(id)sender;
    14. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;
    15. -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
    16. @end
    Alles anzeigen


    ViewController.m:

    Quellcode

    1. #import <QuartzCore/QuartzCore.h>
    2. #import <CoreImage/CoreImage.h>
    3. @interface ViewController ()
    4. @end
    5. @implementation ViewController
    6. @synthesize cameraView;
    7. @synthesize lbMouth;
    8. @synthesize cImage;
    9. - (void)viewDidLoad
    10. {
    11. [super viewDidLoad];
    12. // Do any additional setup after loading the view, typically from a nib.
    13. }
    14. - (void)didReceiveMemoryWarning
    15. {
    16. [super didReceiveMemoryWarning];
    17. // Dispose of any resources that can be recreated.
    18. }
    19. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    20. {
    21. return YES;
    22. }
    23. - (IBAction)cameraClicked:(id)sender
    24. {
    25. if ([UIImagePickerController isSourceTypeAvailable:
    26. UIImagePickerControllerSourceTypeCamera])
    27. {
    28. UIImagePickerController *imagePicker =[[UIImagePickerController alloc] init];
    29. imagePicker.delegate = self;
    30. imagePicker.sourceType =UIImagePickerControllerSourceTypeCamera;
    31. imagePicker.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage,nil];
    32. imagePicker.allowsEditing = NO;
    33. [self presentViewController:imagePicker animated:YES completion:nil];
    34. }
    35. }
    36. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    37. {
    38. [self dismissViewControllerAnimated:YES completion:nil];
    39. UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    40. cImage = [[CIImage alloc] initWithImage:image];
    41. cameraView.image = image;
    42. }
    43. -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
    44. {
    45. [self dismissViewControllerAnimated:YES completion:nil];
    46. }
    47. - (IBAction)analysePicture:(id)sender
    48. {
    49. if (cameraView.image == NULL) {
    50. NSLog(@"Kein Bild vorhanden");
    51. } else {
    52. CIImage *image = [CIImage imageWithCGImage:cameraView.image.CGImage];
    53. CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:[NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]];
    54. NSArray *features = [detector featuresInImage:image];
    55. NSLog(@"features.count: %i", features.count);
    56. for(CIFaceFeature *feature in features)
    57. {
    58. if(feature.hasMouthPosition)
    59. {
    60. lbMouth.text = [NSString stringWithFormat:@"%f", feature.mouthPosition.x];
    61. NSLog(@"es geht");
    62. } else {
    63. lbMouth.text = @"Es geht nicht";
    64. }
    65. }
    66. }
    67. }
    68. @end
    Alles anzeigen


    Wenn ich jetzt aber wie gesagt das:

    Quellcode

    1. CIImage *image = [CIImage imageWithCGImage:cameraView.image.CGImage];


    durch das ersetze geht es:

    Quellcode

    1. CIImage *image = cImage;
    2. UIImage *uImage = [UIImage imageNamed:@"bild.jpg"];
    3. cameraView.image = uImage;


    Vielen Dank im Voraus
    Nils
  • Also ich hab keine wirkliche Ahnung von sowas, aber ich frage mich gerade, in welchem Format arbeitet denn die Kamera? Wenn du ein eigenes Bild nimmst, verwendest du den Typ .jpg, welches Format speichert die Kamera?

    Kommt die Gesichtserkennung vll. mit diesem Format nicht klar?