Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to detect and show eyes and mouth in camera in iPhone?
    primarykey
    data
    text
    <p>For detecting face in camera I am reffering to SquareCam(iOS developer library). But I am unable to show left eye, right eye and mouth position. I am using the following code</p> <pre><code>NSArray *sublayers = [NSArray arrayWithArray:[previewLayer sublayers]]; NSInteger sublayersCount = [sublayers count], currentSublayer = 0; NSInteger featuresCount = [features count], currentFeature = 0; [CATransaction begin]; [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; // hide all the face layers for ( CALayer *layer in sublayers ) { if ( [[layer name] isEqualToString:@"FaceView"] ) [layer setHidden:YES]; } if ( featuresCount == 0 || !detectFaces ) { [CATransaction commit]; return; // early bail. } CGSize parentFrameSize = [previewView frame].size; NSString *gravity = [previewLayer videoGravity]; BOOL isMirrored = [previewLayer isMirrored]; CGRect previewBox = [SquareCamViewController videoPreviewBoxForGravity:gravity frameSize:parentFrameSize apertureSize:clap.size]; for ( CIFaceFeature *ff in features ) { // find the correct position for the square layer within the previewLayer // the feature box originates in the bottom left of the video frame. // (Bottom right if mirroring is turned on) CGRect faceRect = [ff bounds]; CGRect leftEyeFrameRect; CGFloat temp = faceRect.size.width; faceRect.size.width = faceRect.size.height; faceRect.size.height = temp; temp = faceRect.origin.x; faceRect.origin.x = faceRect.origin.y; faceRect.origin.y = temp; // scale coordinates so they fit in the preview box, which may be scaled CGFloat widthScaleBy = previewBox.size.width / clap.size.height; CGFloat heightScaleBy = previewBox.size.height / clap.size.width; faceRect.size.width *= widthScaleBy; faceRect.size.height *= heightScaleBy; faceRect.origin.x *= widthScaleBy; faceRect.origin.y *= heightScaleBy; if ( isMirrored ) { faceRect = CGRectOffset(faceRect, previewBox.origin.x + previewBox.size.width - faceRect.size.width - (faceRect.origin.x * 2), previewBox.origin.y); } else { faceRect = CGRectOffset(faceRect, previewBox.origin.x, previewBox.origin.y); leftEyeFrameRect=CGRectOffset(faceRect,ff.leftEyePosition.x, ff.leftEyePosition.y); } CALayer *featureLayer = nil; CALayer *eyeLayer = nil; // re-use an existing layer if possible while ( !featureLayer &amp;&amp; (currentSublayer &lt; sublayersCount) ) { CALayer *currentLayer = [sublayers objectAtIndex:currentSublayer++]; if ( [[currentLayer name] isEqualToString:@"FaceLayer"] ) { featureLayer = currentLayer; [currentLayer setHidden:NO]; } } // create a new one if necessary if ( !featureLayer ) { featureLayer = [CALayer new]; [featureLayer setContents:(id)[square CGImage]]; [featureLayer setName:@"FaceLayer"]; [previewLayer addSublayer:featureLayer]; [featureLayer release]; } [featureLayer setFrame:faceRect]; if (faceView !=nil) { [faceView removeFromSuperview]; [faceView release]; } if (leftEyeView != nil) { [leftEyeView removeFromSuperview]; [leftEyeView release]; } faceView = [[UIView alloc] initWithFrame:CGRectMake(faceRect.origin.x, faceRect.origin.y ,faceRect.size.width, faceRect.size.height)]; faceView.layer.borderWidth = 1; faceView.layer.borderColor = [[UIColor redColor] CGColor]; [self.view addSubview:faceView]; leftEyeView = [[UIView alloc] initWithFrame:CGRectMake(faceView.frame.origin.x+(faceView.frame.size.height/2), faceView.frame.origin.y+(faceView.frame.size.height*0.10) ,faceView.frame.size.width*0.40, faceView.frame.size.height*0.40)]; UIImageView *leftEyeImageView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"eye.png"]]; leftEyeImageView.frame = CGRectMake(0, 0, faceView.frame.size.width*0.40, faceView.frame.size.height*0.40); [leftEyeView addSubview:leftEyeImageView]; [self.view addSubview:leftEyeView]; if (ff.hasLeftEyePosition) { CGPoint leftEyeCenter= ff.leftEyePosition; UIView *vv= [[UIView alloc] initWithFrame:CGRectMake(leftEyeCenter.x, leftEyeCenter.y, 50, 50)]; vv.center = leftEyeCenter; vv.layer.borderWidth= 4.0; vv.layer.borderColor= [[UIColor blackColor]CGColor]; [self.view addSubview:vv]; } </code></pre> <p>It is detecting eye but not showing in right position. Can anyone help to resolve this. Thanks in advance.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload