#

UWP: Einstellen der Brightness einer Webcam zur Laufzeit

 

Unter UWP Apps kann man zur Laufzeit auf die internen Regler einer Webcam oder USB Kamera zugreifen und diese anpassen.

Während der Verwendung kann man die sogenannten MediaDeviceContol der angeschlossenen Kamera abfragen und dann die internen Funktionen ermitteln.

MediaDeviceControl _control;

MediaDeviceControlCapabilities _caps;

 

_control = _mediaCapture.VideoDeviceController.Brightness;

_caps = _control.Capabilities;

 

 

Sobald die internen Möglichkeiten ermittelt sind, kann man diese auch über die Schnittstelle einstellen

            if (_caps.Supported == true)

            {

                double val = slider_Modify.Value;

                _control.TrySetValue(val);

            }

 

 

 

App: Webcam on Top

 

 

Video Anleitung zum Code

 

C# Code zum Einstellen der Helligkeit, Leuchtkraft einer Webcam-Kamera zur laufzeit

MediaDeviceControl _control;

        MediaDeviceControlCapabilities _caps;

        private void btnOptions_Click(object sender, RoutedEventArgs e)

        {

            //----------------< btnOptions_Click() >----------------

            //*get Brightness Controller of Webcam, internal controller

            //< get Control >

            _control = _mediaCapture.VideoDeviceController.Brightness;

            _caps = _control.Capabilities;

            //</ get Control >

            if (_caps.Supported == true)

            {

                lblApp.Text = "Brightness";

                //----< set Slider >----

                slider_Modify.Visibility = Visibility.Visible;

                slider_Modify.Maximum = _caps.Max;

                slider_Modify.Minimum = _caps.Min;

                double  val = 0;

                _control.TryGetValue(out val);

                slider_Modify.Value = val;

                //----</ set Slider >----

 

                //< set Auto-Control >

                if (_caps.AutoModeSupported)

                {

                    cbxAuto.Visibility = Visibility.Visible;

                    bool isAuto;

                    _control.TryGetAuto(out isAuto);

                    cbxAuto.IsChecked = isAuto;

                }

                else

                {

                    cbxAuto.Visibility = Visibility.Collapsed;

                }

                //</ set Auto-Control >

            }

            else

            {

                //< not supported >

                slider_Modify.Visibility = Visibility.Collapsed;

                cbxAuto.Visibility = Visibility.Collapsed;

                //</ not supported >

            }

            //----------------</ btnOptions_Click() >----------------

        }

 

        private void slider_Modify_ValueChanged(object sender, Windows.UI.Xaml.Controls.Primitives.RangeBaseValueChangedEventArgs e)

        {

            //----------------< slider_Modify_ValueChanged() >----------------

            if (_caps.Supported == true)

            {

                double val = slider_Modify.Value;

                _control.TrySetValue(val);

            }

            //----------------</ slider_Modify_ValueChanged() >----------------

        }

 

        private void cbxAuto_Click(object sender, RoutedEventArgs e)

        {

            //< set auto >

            _control.TrySetAuto((bool)cbxAuto.IsChecked);

            //</ set auto >

        }

 

 

In XAML werden folgende Elemente zum Verändern verwendet

Ein Schieberegler zum Einstellen der Helligkeit, eine Checkbox für Auto-an/aus und hier ein Button zu Initieren des Reglers

<Button x:Name="btnOptions" Click="btnOptions_Click" HorizontalAlignment="Right" VerticalAlignment="Stretch"   Grid.Row="1" Width="45"

               TabIndex="0"

               PointerEntered="btnOptions_PointerEntered" PointerExited="btnOptions_PointerExited" Background="LightGray"   Opacity="0.5"   >

            <SymbolIcon Symbol="SwitchApps"   ></SymbolIcon>   

        </Button>

        <CheckBox x:Name="cbxAuto" Content="Auto" HorizontalAlignment="left" VerticalAlignment="Center" Margin="5,0,0,0" Grid.Row="1" Click="cbxAuto_Click" Visibility="Collapsed" />

        <Slider x:Name="slider_Modify" ValueChanged="slider_Modify_ValueChanged"  HorizontalAlignment="Stretch"  VerticalAlignment="Bottom"     Grid.Row="0" Visibility="Collapsed"/>

 

 

Hierzu benötigt man die Namespaces

using Windows.Media;

using Windows.Media.Capture;

using Windows.Media.MediaProperties;

..

using Windows.Media.Devices;        //Capture Controls

 

Mobile

.

123movies