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