繁体   English   中英

知道MediaCapture何时预览

[英]Knowing when MediaCapture is previewing

我正在使用MediaCapture制作一个简单的照片应用程序。 我希望该应用程序在网络摄像头启动完成并显示预览后立即自动开始倒计时。一切工作正常,除了倒计时在显示照相机预览之前开始。 这是我代码的要点...

mediaCapture = new MediaCapture();
await mediaCapture.InitializeAsync();
previewElement.Source = mediaCapture;
await mediaCapture.StartPreviewAsync();
startCountdown();

XAML:

<CaptureElement x:Name="previewElement"  Visibility="Visible" FlowDirection="RightToLeft"/>

有什么方法可以检查相机是否已完全启动并且预览是否正在显示图像?

在寻找答案时,我偶然发现了各种效果,并发现MediaCapture具有内置的面部检测功能 当检测到面部时,可以肯定地说相机已启动。

//setup face detection
var definition = new FaceDetectionEffectDefinition();
definition.SynchronousDetectionEnabled = false;
definition.DetectionMode = FaceDetectionMode.HighPerformance;
faceDetection = (FaceDetectionEffect)await mediaCapture.AddVideoEffectAsync(definition, MediaStreamType.Photo);
faceDetection.DesiredDetectionInterval = TimeSpan.FromMilliseconds(33);
faceDetection.FaceDetected += FaceDetection_FaceDetected;
faceDetection.Enabled = true;

...

private async void FaceDetection_FaceDetected(FaceDetectionEffect sender, FaceDetectedEventArgs args) {

    if(args.ResultFrame.DetectedFaces.Count() > 0) {
        Debug.WriteLine(string.Format("Detected {0} faces", args.ResultFrame.DetectedFaces.Count()));
        await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => HighlightDetectedFaces(args.ResultFrame.DetectedFaces));
        if (!countdownStarted)
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => startCountdown());
    }
}

尽管这不是我的问题的答案,但这是我的问题的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM