我正在尝试实现内置的 iOS 5 人脸检测 API。我正在使用一个实例UIImagePickerController
来允许用户拍照,然后我试图用它CIDetector
来检测面部特征。不幸的是,featuresInImage
总是返回一个大小为 0 的数组。
这是代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage* picture = [info objectForKey:UIImagePickerControllerOriginalImage];
NSNumber *orientation = [NSNumber numberWithInt:
[picture imageOrientation]];
NSDictionary *imageOptions =
[NSDictionary dictionaryWithObject:orientation
forKey:CIDetectorImageOrientation];
CIImage *ciimage = [CIImage imageWithCGImage:[picture CGImage]
options:imageOptions];
NSDictionary *detectorOptions =
[NSDictionary dictionaryWithObject:CIDetectorAccuracyLow
forKey:CIDetectorAccuracy];
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace
context:nil
options:detectorOptions];
NSArray *features = [detector featuresInImage:ciimage];
NSLog(@"Feature size: %d", features.count);
}
这总是返回 0 个特征。但是,如果我使用应用程序内置文件中的 UIImage,则面部检测效果很好。
我正在使用这篇实用书架文章中的代码。
对于它的价值,我认为错误是当我将 UIImage 从相机转换为 CIImage 时,但它可能是任何东西。