2013-05-31 134 views
2

我想在由AVCapture捕獲的視頻上顯示CALayer。 我能夠顯示圖層,但是應該刪除先前的下一幀。如何在AVCapture視頻上添加CALayer矩形形狀?

我的代碼是:

[CATransaction begin]; 
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; 

for (int i = 0; i < faces.size(); i++) { 
    CGRect faceRect; 
    // Get the Graphics Context   

    faceRect.origin.x = xyPoints.x; 
    faceRect.origin.y = xyPoints.y; 
    faceRect.size.width =50; //faces[i].width; 
    faceRect.size.height =50;// faces[i].height; 

    CALayer *featureLayer=nil;   

    // faceRect = CGRectApplyAffineTransform(faceRect, t); 
    if (!featureLayer) { 
     featureLayer = [[CALayer alloc]init]; 

     featureLayer.borderColor = [[UIColor redColor] CGColor]; 
     featureLayer.borderWidth = 10.0f; 
     [self.view.layer addSublayer:featureLayer]; 

    } 

    featureLayer.frame = faceRect; 

    NSLog(@"frame-x - %f, frame-y - %f, frame-width - %f, frame-height - %f",featureLayer.frame.origin.x,featureLayer.frame.origin.y,featureLayer.frame.size.width,featureLayer.frame.size.height); 
} 

// [featureLayer removeFromSuperlayer]; 
[CATransaction commit]; 

這裏面對的是(const std::vector<cv::Rect)face OpenCV的格式。 我需要知道在哪裏放置代碼[featureLayer removeFromSuperLayer];

注意:「臉」不適用於人臉檢測......它只是一個矩形。

回答

1

我已經得到了解決方案... featureLayer是CALayer對象我將此作爲標識。像

featureLayer.name = @"earLayer"; 

,每當我發現在幀中的對象我從主視圖中的子層像

NSArray *sublayers = [NSArray arrayWithArray:[self.view.layer sublayers]]; 

和計數子層辦理登機手續循環象下面這樣:

int sublayersCount = [sublayers count]; 
    int currentSublayer = 0; 
for (CALayer *layer in sublayers) { 
     NSString *layerName = [layer name]; 
     if ([layerName isEqualToString:@"earayer"]) 
      [layer setHidden:YES]; 
} 

現在我正在使用Detected對象獲取適當的圖層。

相關問題