我正在寻找一种方法来提高我的 Lumia 920 手机的图像捕获率。我已经做了一些测试,在全分辨率(8 MP)下,图像捕获步骤似乎需要大约 1300 毫秒。我用 iPhone 5 进行了类似的测试,图像捕获步骤在全分辨率 (8 MP) 下在不到 400 毫秒内完成。这是一个很大的区别!这是我的代码:
public async Task TakePictures()
{
IReadOnlyList<Windows.Foundation.Size> captureResolutions = PhotoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back);
PhotoCaptureDevice camera = await PhotoCaptureDevice.OpenAsync(CameraSensorLocation.Back, captureResolutions[0]);
CameraCaptureSequence captureSequence = camera.CreateCaptureSequence(1);
MemoryStream captureStream = new MemoryStream();
captureSequence.Frames[0].CaptureStream = captureStream.AsOutputStream();
await camera.PrepareCaptureSequenceAsync(captureSequence);
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
// take a bunch of images
for (int i = 0; i < 20; i++)
{
TimeSpan t1 = DateTime.Now.TimeOfDay;
await captureSequence.StartCaptureAsync();
TimeSpan t2 = DateTime.Now.TimeOfDay;
// could save file here
Debug.WriteLine("image capture time = {0} ms", t2.TotalMilliseconds - t1.TotalMilliseconds);
}
}
关于为什么该StartCaptureAsync()
方法可能需要这么长时间的任何想法?我已经修复了 ISO、曝光时间、焦点和白平衡等参数,因此相机不需要为每次拍摄重新校准这些设置。
我想到的一件事是使用此处描述的本机代码 API ,但我对 Windows Phone 开发还很陌生,所以我对此知之甚少。
有任何想法吗?谢谢!