UIImagePickerController禁用iPhone 4S人脸检测(iOS 5.1)

我目前正在开发一个iPhone应用程序,使用自定义覆盖的UIImagePickerController拍照。

不幸的是,我没有直接访问iPhone 4S,但几个testing人员报告说,相机采集器正在像这样绘制一个绿色的边框周围: http : //cdn.iphonehacks.com/wp-content/uploads/2012/03 /camera_faces.jpg

由于这个应用程序的性质,这是不可取的。

UIImagePickerController文档的全面search没有任何东西,类似地,我在这里可以find关于人脸检测的所有内容都提供了如何使用CIDetector或类似的指令。

如何禁用我的UIImagePickerController中的脸部检测?

这是我的UIImagePickerController的初始化代码:

UIImagePickerController *cameraPicker = [[UIImagePickerController alloc] init]; [cameraPicker setSourceType:UIImagePickerControllerSourceTypeCamera]; [cameraPicker setCameraDevice:UIImagePickerControllerCameraDeviceRear]; if ([UIImagePickerController isFlashAvailableForCameraDevice:cameraPicker.cameraDevice]){ [cameraPicker setCameraFlashMode:UIImagePickerControllerCameraFlashModeOn]; } [cameraPicker setShowsCameraControls:NO]; [cameraPicker setCameraOverlayView:cameraOverlayView]; cameraPicker.delegate = self; [self presentModalViewController:cameraPicker animated:YES]; 

看看这个post。 这里有一些提示,但仍然无法find有关此API的Apple文档以外的许多信息。 正确使用CIDetectorTracking

试试这个 – >

让我们说我们有一个名为 – RecordVideoViewController的UIViewController

实现 – RecordVideoViewController.h

 #import <UIKit/UIKit.h> #import <MediaPlayer/MediaPlayer.h> #import <MobileCoreServices/UTCoreTypes.h> #import <AssetsLibrary/AssetsLibrary.h> @interface RecordVideoViewController : UIViewController - (IBAction)recordAndPlay:(id)sender; -(BOOL)startCameraControllerFromViewController:(UIViewController*)controllerusingDelegate: (id)delegate; -(void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo(void*)contextInfo; @end 

实现 – RecordVideoViewController.m

 - (IBAction)recordAndPlay:(id)sender { [self startCameraControllerFromViewController:self usingDelegate:self]; } -(BOOL)startCameraControllerFromViewController:(UIViewController*)controller usingDelegate:(id )delegate { // 1 - Validattions if (([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == NO) || (delegate == nil) || (controller == nil)) { return NO; } // 2 - Get image picker UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init]; cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera; // Displays a control that allows the user to choose movie capture cameraUI.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil]; // Hides the controls for moving & scaling pictures, or for // trimming movies. To instead show the controls, use YES. cameraUI.allowsEditing = NO; cameraUI.delegate = delegate; // 3 - Display image picker [controller presentViewController:cameraUI animated:YES completion:nil]; return YES; } -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info { NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType]; [self dismissViewControllerAnimated:YES completion:nil]; // Handle a movie capture if (CFStringCompare ((__bridge_retained CFStringRef) mediaType, kUTTypeMovie, 0) == kCFCompareEqualTo) { NSString *moviePath = [[info objectForKey:UIImagePickerControllerMediaURL] path]; if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(moviePath)) { UISaveVideoAtPathToSavedPhotosAlbum(moviePath, self,@selector(video:didFinishSavingWithError:contextInfo:),nil); } } } -(void)video:(NSString*)videoPath didFinishSavingWithError:(NSError*)error contextInfo: (void*)contextInfo { if (error) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Video Saving Failed" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Video Saved" message:@"Saved To Photo Album" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } } 

实现这个代码,我希望这会帮助你。