在我的 Windows 8 应用商店应用程序中,我倾向于执行实时视频流处理(例如人脸检测)。
技术1
在我之前的 Windows 7 应用程序中,我能够使用以下技术(C# 中的相机人脸检测使用 Emgu CV(.NET 中的 OpenCV)和 WPF)来执行实时视频处理。该技术具有固定周期的计时器回调,以主动从相机对象查询图像缓冲区。
void timer_Tick(object sender, EventArgs e)
{
Image<Bgr,Byte> 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的视频处理的文章中,他们大多使用内置的处理功能
- 如何旋转捕获的视频(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用程序)
- 如何为捕获的视频添加视频稳定效果(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用程序)
他们都没有演示如何访问原始相机捕获的缓冲区,逐个像素地迭代缓冲区。
我相信我需要CaptureElement & MediaCapture
根据
http://blog.xyzzer.me/2012/01/22/displaying-webcam-preview-in-a-metro-app-using-winrt-and-xaml/
如果您只想查看网络摄像头输入或将其轻松捕获到文件中,此方法非常有用。如果您想实时处理视频或叠加一些其他 UI 组件 - 输入...</p>
CaptureElement 和 MediaCapture 方式
不过,作者在此之后不再详述。(我希望他这样做:)
任何提示如何从 CaptureElement 和 MediaCapture 执行实时视频流处理?