如何将相机聚焦在Windows Universal Apps中?

时间:2015-12-04 15:10:37

标签: c# camera uwp autofocus

我正在使用位于此处的Windows Universal Sample for OCR:

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/OCR/cs

特别是OcrCapturedImage.xaml.cs

似乎相机经常变得没有焦点,模糊,并且远不如原生相机应用程序那么好。如何设置自动对焦和/或点按以修复曝光?

到目前为止我所尝试的是查看有助于设置分辨率的其他相机样本,但我找不到有关焦距/曝光的任何内容。

更新

我认为

await mediaCapture.VideoDeviceController.FocusControl.FocusAsync();

await mediaCapture.VideoDeviceController.ExposureControl.SetAutoAsync(true);

但这不起作用(不做任何事情 - 仍然模糊等),如果有人知道如何点击某个区域并相应地应用焦点/曝光,则可以建立起来。

原生相机:

enter image description here

App Camera:

enter image description here

根据回答更新:

我必须将我的焦点方法放在错误的位置,因为我的原始更新代码有效。 Sergi也有效。我想将tapped事件与它结合使用,如下所示:

Point tapped=e.GetPosition(null); //Where e is TappedRoutedEventArgs from a tapped event method on my preview screen
await mediaCapture.VideoDeviceController.RegionsOfInterestControl.ClearRegionsAsync();
await mediaCapture.VideoDeviceController.RegionsOfInterestControl.SetRegionsAsync(new[] { new RegionOfInterest() { Bounds = new Rect(tapped.X, tapped.Y, 0.02, 0.02) } }); //Throws Parameter Incorrect

但它抛出参数不正确。另外,如何在预览屏幕上显示矩形的矩形,以便用户知道感兴趣的区域有多大?

这是一个很棒的链接https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/CameraManualControls/cs/MainPage.Focus.xaml.cs

1 个答案:

答案 0 :(得分:8)

使用FocusControl类的Configure方法配置自动对焦。

mediaCapture.VideoDeviceController.FocusControl.Configure(
    new FocusSettings { Mode = FocusMode.Auto });
await mediaCapture.VideoDeviceController.FocusControl.FocusAsync();

为了专注于某个区域,可以使用RegionOfInterestControl属性。它具有SetRegionsAsync方法来添加RegionOfInterest个实例的集合。 RegionOfInterest具有Bounds属性,用于定义焦点区域。此示例显示如何将焦点设置在中心:

// clear previous regions of interest
await mediaCapture.VideoDeviceController.RegionOfInterestControl.ClearRegionsAsync();
// focus in the center of the screen
await mediaCapture.VideoDeviceController.RegionOfInterestControl.SetRegionsAsync(
    new [] 
         { 
             new RegionOfInterest() {Bounds = new Rect(0.49,0.49,0.02,0.02) } 
         });