C# 通过曝光控制类控制相机曝光

C# 通过曝光控制类控制相机曝光,c#,.net,camera,uwp,media,C#,.net,Camera,Uwp,Media,我在uwp应用程序中有一个类,该类使用USB摄像头的设备ID初始化MediaCapture对象,然后在加载我的应用程序主页(打开预览流)时调用该类。这一切都很好,但我正试图通过MediaCapture.VideoDeviceController控制相机的曝光,根据MS Docs的一篇文章,这应该可以通过曝光控制类实现。然而,当我尝试实现那篇文章中显示的滑块时,它说是,并抛出一个System.Runtime.InteropServices.COMException。现在,我知道这个相机支持曝光控制

我在uwp应用程序中有一个类,该类使用USB摄像头的设备ID初始化MediaCapture对象,然后在加载我的应用程序主页(打开预览流)时调用该类。这一切都很好,但我正试图通过MediaCapture.VideoDeviceController控制相机的曝光,根据MS Docs的一篇文章,这应该可以通过曝光控制类实现。然而,当我尝试实现那篇文章中显示的滑块时,它说是,并抛出一个
System.Runtime.InteropServices.COMException
。现在,我知道这个相机支持曝光控制,因为我可以在另一个应用程序中调整它。除此之外,我可以通过上面的“曝光”属性看到,它有以下内容。这些最小值和最大值是我在其他应用程序中可以看到的值。那么,我如何使用曝光控制类来调整曝光?有更好的方法吗?我的最终目标是使用相机拍摄图像并将其保存到文件中

摄像机等级:

class Camera:ICamera
{
    public double exposure { get; set; }
    public MediaCapture media;
    public string deviceID;
    public async Task InitializeCamera()
    {
        var videoDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
        media = new MediaCapture();

        for (int i = 0; i < videoDevices.Count; i++)
        {
            var devInfo = videoDevices[i];
            if (devInfo.Name !="UNICAM Front" && devInfo.Name != "UNICAM Rear")
            {
                deviceID = devInfo.Id;
                break;
            }
        }
        await media.InitializeAsync(new MediaCaptureInitializationSettings {VideoDeviceId = deviceID});
    }
}

我们应该能够使用
ExposureControl.Supported
属性来检查捕获设备是否支持曝光控制。有一个,请参考。我们应该能够使用
ExposureControl.Supported
属性来检查捕获设备是否支持曝光控制。有一个,请参考。
private async void Page_Loaded(object sender, RoutedEventArgs e)
{
    Camera camera = new Camera();
    await camera.InitializeCamera();
    MediaCapture _media;
    _media = camera.media;
    bool _isPreviewing;

    DisplayRequest _displayRequest = new DisplayRequest();

    _displayRequest.RequestActive();
    DisplayInformation.AutoRotationPreferences = DisplayOrientations.Landscape;

    PreviewControl.Source = _media;
    await _media.StartPreviewAsync();
    _isPreviewing = true;   
}