首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >知道MediaCapture什么时候预览

知道MediaCapture什么时候预览
EN

Stack Overflow用户
提问于 2017-09-29 22:46:44
回答 1查看 69关注 0票数 0

我正在用MediaCapture制作一个简单的照片应用程序。我希望应用程序在摄像头完成启动并显示预览后立即自动启动倒计时。一切都很好,除了倒计时在镜头预览出现之前就开始了。这是我的代码要点..。

代码语言:javascript
复制
mediaCapture = new MediaCapture();
await mediaCapture.InitializeAsync();
previewElement.Source = mediaCapture;
await mediaCapture.StartPreviewAsync();
startCountdown();

xaml:

代码语言:javascript
复制
<CaptureElement x:Name="previewElement"  Visibility="Visible" FlowDirection="RightToLeft"/>

是否有一种方法,我可以检查什么时候相机已经完全启动,预览是显示一个图像?

EN

回答 1

Stack Overflow用户

发布于 2017-09-30 01:08:25

在我寻找答案的过程中,我偶然发现了效果,并发现MediaCapture有内置的人脸检测。当检测到一张脸时,可以安全地说摄像机启动了。

代码语言:javascript
复制
//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());
    }
}

虽然这不是我问题的答案,但它是我问题的解决办法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46497832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档