windows phone 8.1显示PreviewFrame并计算每帧红色像素的平均值

windows phone 8.1 dispaly PreviewFrame and calculate mean value of red pixels for every frame

目前我正在使用 Lumia.Imaging 获取预览帧并显示它。

我创建了新方法 "GetPreview()" 来遍历像素,找到红色像素,然后我想计算每一帧的红色像素的平均值。

我的问题是,当我浏览 Pixel 时,应用程序出现滞后 :(

不是在 Lumia Imaging SDK 处理完图像后检查所有像素,而是在使位图无效之前,您可以:

  • 立即使可写位图无效,然后在单独的异步任务中执行分析步骤。这意味着内容将立即显示,您的分析将单独完成。基于您的样本的一些伪代码是:
    await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.High, () => {                
    var analysisTask = Task.Run(() => getPreview());

    previewImage.Source = _writeableBitmap; // previewImage is an image element in MainPage.xaml
    _writeableBitmap.Invalidate(); // force the PreviewBitmap to redraw

    await analysisTask;
    });

这样分析图像的任务就不会阻止屏幕上的更新。当然,如果您需要渲染链本身的分析结果,此选项可能不可行。

  • 为分析创建自定义过滤器,这样您就可以利用优化的 Lumia Imaging SDK 处理。

    开始编写自定义过滤器 look at the documentation