我正在开发一个UWP应用程序,需要从笔记本电脑摄像头扫描二维码。为此,我使用了Windows.Media.Capture.MediaCapture类。一切都很好,除了在智能手机上使用二维码时,它的亮度对于内置摄像头有限的动态范围来说太高了。网络摄像头的自动曝光是激活的,但与环境相比,屏幕仍然可能太亮。
我正在寻找一种手动或使用某种曝光补偿模式来控制或覆盖亮度或曝光的方法。
在我的常规内置摄像头上启用/工作的亮度/曝光的唯一属性是亮度和对比度,这些属性会相应地改变图像,但看起来像是后处理效果。它们不会改变相机本身的曝光,因此不能解决问题。
mediaCapture.VideoDeviceController.ExposureCompensationControl.Supported;
mediaCapture.VideoDeviceController.ExposureControl.Supported;
mediaCapture.VideoDeviceController.ExposurePriorityVideoControl.Supported;
mediaCapture.VideoDeviceController.Exposure.Capabilities.Supported;所有返回false
mediaCapture.VideoDeviceController.Brightness.TrySetValue(10);更改图像,但高光仍会被洗掉,并且没有细节可供扫描仪拾取
发布于 2019-11-15 08:52:20
关于通过windows驱动程序以编程方式控制相机曝光,您正在考虑正确的接口。使用MS Surface Pro 4,我已经成功地使用以下界面修改了曝光:
mediaCapture.VideoDeviceController.ExposureControl
此外,微软还提供了一些很好的示例和文档来说明如何实现这一点。请记住,如果您的硬件不支持曝光功能,示例(和MS相机应用程序)将隐藏控件。
https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/CameraManualControls
缺乏成像控制(如曝光)确实与质量无关。这与相机解决方案的完整性有更多关系。相机传感器有一个控制接口(例如i2c),它与驱动图像的数据接口是分开的。大多数第三方摄像头模块不会实现启用这些控件所需的硬件/软件。
https://stackoverflow.com/questions/57110488
复制相似问题