2017-01-24 2 views
0

의 현재 미리보기 프레임 해상도를 얻을 :가 어떻게 제대로 인식 된 얼굴의 경계를 표시하기 위해 현재의 미리보기 프레임 해상도를 얻을 필요가 MediaCapture

_mediaCapture = new MediaCapture(); 
await _mediaCapture.InitializeAsync(); 
var definition = new FaceDetectionEffectDefinition(); 
var faceDetectionEffect = (FaceDetectionEffect)await _mediaCapture.AddVideoEffectAsync(definition, MediaStreamType.VideoPreview); 
faceDetectionEffect.DesiredDetectionInterval = TimeSpan.FromMilliseconds(33); 
faceDetectionEffect.Enabled = true; 
faceDetectionEffect.FaceDetected += FaceDetected; 
PreviewControl.Source = _mediaCapture; 
await _mediaCapture.StartPreviewAsync(); 

private async void FaceDetected(object sender, FaceDetectedEventArgs args) 
{ 
    double scale = PreviewControl.ActualWidth/???; 
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High,() => 
    { 

     var faces = args.ResultFrame.DetectedFaces; 
     for (int i = 0; i < faces.Count; i++) 
     { 
      double scale = P 
      var faceRect = faces[i].FaceBox; 
      Rectangle item; 
      if (FacesCanvas.Children.Count <= i) 
      { 
       item = new Rectangle(); 
       item.Fill = new SolidColorBrush(Colors.AliceBlue); 
       FacesCanvas.Children.Add(item); 
      } 
      else item = (Rectangle)FacesCanvas.Children[i]; 
      item.Height = faceRect.Height * scale; 
      item.Width = faceRect.Width * scale; 
      Canvas.SetLeft(item, faceRect.X * scale); 
      Canvas.SetTop(item, faceRect.Y * scale); 
     } 
    }); 
} 

답변