7

我正在考虑为 Windows Phone 8 创建一个 AR 镜头。我玩过镜头和相机功能,这一切都很好。我可以在屏幕上放置图标和图片,并处理用手机拍摄的照片。但我需要做的是能够在拍摄快照之前实时读取相机屏幕。

示例:面部镜头必须扫描实时屏幕,检查我假设的像素,以计算某人的鼻子/眼睛/等将小丑鼻子或眼镜或其他任何东西放在实时相机屏幕上的位置。

我可以用一张照片来做到这一点,但似乎无法找到一种在不拍照的情况下访问相机中当前帧的方法。基本上,我想扫描相机应用程序中显示的每一帧的每个像素。我知道这是可能的,其他镜头可以做到这一点,但我应该在哪里找到正确的访问方法。

4

1 回答 1

6

这当然是可能的。这样做的关键是利用PhotoCamera.GetPreviewBufferArgb32()函数。

基本思想是从 PhotoCamera 对象中获取预览缓冲区。这样做是这样的:

int[] pixelData = new int[(int)(camera.PreviewResolution.Width * camera.PreviewResolution.Height)];
camera.GetPreviewBufferArgb32(pixelData);
return pixelData;

这将为您提供未压缩的、类似 .bmp 的图片。然后,您可以访问该数据以识别特征,或在其中绘制其他对象。

修改数据后,将其推送到 aWriteableBitmap()以显示如下:

int[] previewBuffer = GetPreviewBuffer();
pixelData.CopyTo(previewWriteableBitmap.Pixels, 0);
previewWriteableBitmap.Invalidate();

免责声明:其中大部分内容来自 Microsoft 的Live Camera 示例。确保还查看Greyscale Camera 示例,尤其是在处理事件和捕获图片时。

于 2013-05-06T16:48:09.503 回答