如何使用MediaCapture.VideoDeviceController进行QR码扫描来控制UWP中网络摄像头的曝光或亮度

时间:2019-07-19 10:28:48

标签: c# uwp qr-code webcam mediacapture

我正在开发一个UWP应用程序,该应用程序需要从笔记本电脑的网络摄像头扫描QR码。我为此使用Windows.Media.Capture.MediaCapture类。一切正常,除了在智能手机上使用qr代码且其亮度设置过高而无法在内置网络摄像头的动态范围内使用时,一切正常。网络摄像头的自动曝光处于活动状态,但与环境相比,屏幕仍然可能太亮。

我正在寻找一种手动或通过某种曝光补偿模式来控制或覆盖亮度或曝光的方法。

在常规的内置网络摄像头上启用/工作的与亮度/曝光有关的唯一属性是“亮度”和“对比度”,它们会相应地更改图像,但看起来它们是后处理效果。它们不会改变相机本身的曝光,因此无法解决问题。

mediaCapture.VideoDeviceController.ExposureCompensationControl.Supported;
mediaCapture.VideoDeviceController.ExposureControl.Supported;
mediaCapture.VideoDeviceController.ExposurePriorityVideoControl.Supported;
mediaCapture.VideoDeviceController.Exposure.Capabilities.Supported;

全部返回false

mediaCapture.VideoDeviceController.Brightness.TrySetValue(10);

改变图像,但是高光仍然被洗掉,没有细节可以让扫描仪拾取

1 个答案:

答案 0 :(得分:2)

关于通过Windows驱动程序以编程方式控制照相机曝光的问题,您正在考虑使用正确的界面。使用MS Surface Pro 4,我已经使用以下界面成功修改了曝光:

mediaCapture.VideoDeviceController.ExposureControl

此外,MS还提供了一些不错的示例和文档,说明了如何使其正常工作。请记住,如果您的硬件不支持曝光功能,则示例(和MS Camera应用程序)将隐藏控件。

https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/capture-device-controls-for-photo-and-video-capture

https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/CameraManualControls

缺乏对成像控件的访问(例如曝光)确实与质量无关。它与相机解决方案的完整性有关。相机传感器具有一个控制接口(例如i2c),该接口与驱动图像的数据接口是分开的。大多数第三方相机模块不会实现启用这些控件所需的硬件/软件。