我正在用MediaCapture制作一个简单的照片应用程序。我希望应用程序在摄像头完成启动并显示预览后立即自动启动倒计时。一切都很好,除了倒计时在镜头预览出现之前就开始了。这是我的代码要点..。
mediaCapture = new MediaCapture();
await mediaCapture.InitializeAsync();
previewElement.Source = mediaCapture;
await mediaCapture.StartPreviewAsync();
startCountdown();xaml:
<CaptureElement x:Name="previewElement" Visibility="Visible" FlowDirection="RightToLeft"/>是否有一种方法,我可以检查什么时候相机已经完全启动,预览是显示一个图像?
发布于 2017-09-30 01:08:25
在我寻找答案的过程中,我偶然发现了效果,并发现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());
}
}虽然这不是我问题的答案,但它是我问题的解决办法。
https://stackoverflow.com/questions/46497832
复制相似问题