Пример #1
0
        async private Task <PhotoCaptureDevice> InitCamera(CameraPreviewSettings settings, CameraSensorLocation loc)
        {
            PhotoCaptureDevice camera = await OpenCamera(settings.Width, settings.Height, loc);

            UInt32                     iso           = Helper.GetISO((UInt32)settings.ISO, loc);
            Nullable <UInt32>          wb            = Helper.GetWhiteBalance(settings.WhiteBalance, loc);
            CameraCapturePropertyRange focusRange    = PhotoCaptureDevice.GetSupportedPropertyRange(loc, KnownCameraGeneralProperties.ManualFocusPosition);
            UInt32                     focusDistance = settings.FocusDistance.Equals("min", StringComparison.OrdinalIgnoreCase) ? (UInt32)focusRange.Min : (UInt32)focusRange.Max;

            camera.SetProperty(KnownCameraPhotoProperties.ExposureCompensation, 0);
            camera.SetProperty(KnownCameraPhotoProperties.FlashMode, FlashState.Off);
            camera.SetProperty(KnownCameraPhotoProperties.FocusIlluminationMode, 0);

            if (wb.HasValue)
            {
                camera.SetProperty(KnownCameraPhotoProperties.WhiteBalancePreset, wb.Value);
                _waitForWb = true;
                Debug.WriteLine("Using WB value: {0}", wb.Value);
            }

            camera.SetProperty(KnownCameraPhotoProperties.Iso, iso);
            camera.SetProperty(KnownCameraGeneralProperties.ManualFocusPosition, focusDistance);

            Debug.WriteLine("Using ISO: {0}, Using Focus Distance: {1}", camera.GetProperty(KnownCameraPhotoProperties.Iso), camera.GetProperty(KnownCameraGeneralProperties.ManualFocusPosition));

            return(camera);
        }
Пример #2
0
        async public void TakePictures(CameraPreviewSettings settings)
        {
            ResetVariables();

            _settings = settings;

            _photoDevice = await InitCamera(_settings, SENSOR_LOCATION);

            // Init buffer
            _frameBuffer = new byte[(int)_photoDevice.PreviewResolution.Width * (int)_photoDevice.PreviewResolution.Height * 2];

            Debug.WriteLine("Capturing {0} frames...", _settings.Frames);

            await _photoDevice.FocusAsync();

            _photoDevice.PreviewFrameAvailable += OnPreviewFrame;
        }