2012-10-05 53 views
0

我用下面的代码来检测人脸的IOS 5IOS 6人脸检测不工作

CIImage *cIImage = [CIImage imageWithCGImage:image.CGImage]; 
      CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:[NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]]; 
      NSArray *features = nil; 
      features = [detector featuresInImage:cIImage]; 
      if ([features count] == 0) 
      { 
       NSDictionary* imageOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:6] forKey:CIDetectorImageOrientation]; 
       features = [detector featuresInImage:cIImage options:imageOptions]; 
      } 

有了这个代码,我能够发现在iOS 5中的脸,但最近我们已经升级了系统的Xcode 4.4和IOS 6,现在,人脸检测工作不正常,

我需要什么样的改变在IOS检测面部做6

帮助Anykind高度赞赏

+0

我不认为这个问题会发生,请将您的样品code..i将检查它 – Rajneesh071

+0

我已经实施了我的项目中的代码,很难发送它 – iYahoo

+0

你可以使你的问题的样本.... – Rajneesh071

回答

0

我希望这有助于ü...

添加CoreImage.framework

-(void)faceDetector 

{ 

// Load the picture for face detection 

UIImageView* image = [[UIImageView alloc] initWithImage: 

[UIImage imageNamed:@"facedetectionpic.jpg"]]; 

// Draw the face detection image 

[self.window addSubview:image]; 

// Execute the method used to markFaces in background 

[self markFaces:image]; 

} 


-(void)faceDetector 

{ 

// Load the picture for face detection 

    UIImageView* image = [[UIImageView alloc] initWithImage:[UIImage 
imageNamed:@"facedetectionpic.jpg"]]; 


    // Draw the face detection image 
    [self.window addSubview:image]; 

    // Execute the method used to markFaces in background 
    [self performSelectorInBackground:@selector(markFaces:) withObject:image]; 

    // flip image on y-axis to match coordinate system used by core image 
    [image setTransform:CGAffineTransformMakeScale(1, -1)]; 

    // flip the entire window to make everything right side up 
    [self.window setTransform:CGAffineTransformMakeScale(1, -1)]; 


} 

,并检查这两个环节也

http://maniacdev.com/2011/11/教程容易用面部检测与核图像合IOS-5/

http://i.ndigo.com.br/2012/01/ios-facial-recognition/

1

我注意到iOS6中的人脸检测不如iOS5中的人脸检测。 尝试一系列的图像。您可能会发现它在iOS6中可以使用很多图像,但不是全部。

我一直在测试同一组图像: 1.运行iOS6的模拟器。 2. iPhone 5(iOS6) 3. iPhone 3GS(iOS5)。

3GS检测到比其他两个选项更多的面孔。

下面的代码,它适用于这两种,但只是没有以及在iOS6的:

- (void)analyseFaces:(UIImage *)facePicture { 
// Create CI image of the face picture 
CIImage* image = [CIImage imageWithCGImage:facePicture.CGImage]; 

// Create face detector with high accuracy 
CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace 
              context:nil options:[NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]]; 

// Create array of detected faces 
NSArray* features = [detector featuresInImage:image]; 

// Read through the faces and add each face image to facesFound mutable 
for(CIFaceFeature* faceFeature in features) 
{ 
    CGSize parentSize = facePicture.size; 

    CGRect origRect = faceFeature.bounds; 
    CGRect flipRect = origRect; 
    flipRect.origin.y = parentSize.height - (origRect.origin.y + origRect.size.height); 

    CGImageRef imageRef = CGImageCreateWithImageInRect([facePicture CGImage], flipRect); 
    UIImage *faceImage = [UIImage imageWithCGImage:imageRef]; 
    CGImageRelease(imageRef); 

    if (faceImage) 
     [facesFound addObject:faceImage]; 
} 

}