从CaptureElement和MediaCapture执行实时video流处理
在我的Windows 8商店应用程序中,我倾向于执行实时video流处理(例如,面部检测)。
技术1
在我以前的Windows 7应用程序中,我能够使用以下技术( C#中的相机面部检测使用Emgu CV(OpenCV in .NET)和WPF )来执行实时video处理。 该技术具有固定周期定时器回调,以主动从相机对象查询图像缓冲区 。
void timer_Tick(object sender, EventArgs e) { Image currentFrame = capture.QueryFrame(); // Perform image processing based on currentFrame
技术2
我之前在Android中使用的另一种技术是,我将在相机上安装相机缓冲预览回调。 摄像机将通过传递捕获的摄像机缓冲区定期触发回调 。 从那里,我可以执行图像处理。
public abstract void onPreviewFrame (byte[] data, Camera camera) { // Perform image processing based on data
但是,在谈论Windows 8 Store Application的video处理的文章中,他们大多使用内置处理function
他们都没有演示如何访问原始相机捕获的缓冲区,逐个像素地迭代缓冲区。
我相信我需要根据使用CaptureElement & MediaCapture
https://blog.xyzzer.me/2012/01/22/displaying-webcam-preview-in-a-metro-app-using-winrt-and-xaml/
如果您只想查看网络摄像头输入或将其捕获到文件而没有麻烦,这种方法很棒。 如果您想实时处理video或覆盖其他一些UI组件 – 请输入…
CaptureElement和MediaCapture方式
但是,之后作者没有详细说明。 (我希望他这样做:)
任何提示如何从CaptureElement和MediaCapture执行实时video流处理?
您可以先尝试的是MediaCapture.CapturePhotoToStreamAsync,我认为这也只是压缩照片的情况,但您可以很快将其解码回WriteableBitmap并对其像素进行一些处理。 你可能不会以这种方式每秒处理太多帧。
更好的方法可能是使用MediaCapture.AddEffectAsync()并在C ++中编写一个Media Foundation Transform(MFT)来处理video,并以某种方式将结果传回给应用程序。
上述就是C#学习教程:从CaptureElement和MediaCapture执行实时video流处理分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/943610.html