Ejemplo n.º 1
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            capture_element.Source = m_camera;
            m_camera.StartPreviewAsync();

            //StorageFile file = await KnownFolders.DocumentsLibrary.CreateFileAsync("_exposure.jpg", CreationCollisionOption.ReplaceExisting);


            m_camera.AddEffectAsync(MediaStreamType.VideoPreview, "GrayscaleTransform.GrayscaleEffect", null);


            //m_camera.StartRecordToStorageFileAsync()
            float maxExp = m_camera.VideoDeviceController.ExposureCompensationControl.Max;
            float minExp = m_camera.VideoDeviceController.ExposureCompensationControl.Min;
            float step   = m_camera.VideoDeviceController.ExposureCompensationControl.Step;

            TimeSpan maxExpControl = m_camera.VideoDeviceController.ExposureControl.Max;
            TimeSpan minExpControl = m_camera.VideoDeviceController.ExposureControl.Min;
            TimeSpan stepExp       = m_camera.VideoDeviceController.ExposureControl.Step;

            TimeSpan value = m_camera.VideoDeviceController.ExposureControl.Value;
            var      supportedVideoFormats = new List <string> {
                "nv12", "rgb32"
            };

            var availableMediaStreamProperties = m_camera.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.VideoRecord).OfType <Windows.Media.MediaProperties.VideoEncodingProperties>().Where(p => p != null &&
                                                                                                                                                                                                                      !String.IsNullOrEmpty(p.Subtype) &&
                                                                                                                                                                                                                      supportedVideoFormats.Contains(p.Subtype.ToLower()))
                                                 .ToList();

            Windows.Media.MediaProperties.VideoEncodingProperties previewFormat = availableMediaStreamProperties.FirstOrDefault();

            //previewFormat.FrameRate.Numerator = 15;
            //previewFormat.FrameRate.Denominator = 1;

            //availableMediaStreamProperties.All;
            m_camera.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoRecord, previewFormat);

            m_camera.VideoDeviceController.ExposureControl.SetAutoAsync(false);

            TimeSpan k = new TimeSpan(833);

            m_camera.VideoDeviceController.ExposureControl.SetValueAsync(minExpControl);

            await this.StreamToFile();

            //m_camera.VideoDeviceController.ExposureCompensationControl.SetValueAsync(0);
            //m_camera.VideoDeviceController.ExposureCompensationControl.SetValueAsync(0.0f);

            //double exp;
            //bool b = m_camera.VideoDeviceController.Exposure.TryGetValue(out exp);

            // m_camera.VideoDeviceController.ExposureControl.SetValueAsync(new TimeSpan(1))
            //m_camera.VideoDeviceController.Exposure.TrySetValue(0.00833);
            //m_camera.VideoDeviceController.ExposureControl.SetAutoAsync(false);
            //m_camera.VideoDeviceController.ExposureControl.SetValueAsync(new TimeSpan(10 * 2000));

            //  m_camera.VideoDeviceController.ExposureControl.SetValueAsync(minExpControl);
        }
Ejemplo n.º 2
0
        // <SnippetAddOverlay>
        private void AddOverlay(MediaClip overlayMediaClip, double scale, double left, double top, double opacity)
        {
            Windows.Media.MediaProperties.VideoEncodingProperties encodingProperties =
                overlayMediaClip.GetVideoEncodingProperties();

            Rect overlayPosition;

            overlayPosition.Width  = (double)encodingProperties.Width * scale;
            overlayPosition.Height = (double)encodingProperties.Height * scale;
            overlayPosition.X      = left;
            overlayPosition.Y      = top;

            MediaOverlay mediaOverlay = new MediaOverlay(overlayMediaClip);

            mediaOverlay.Position = overlayPosition;
            mediaOverlay.Opacity  = opacity;

            MediaOverlayLayer mediaOverlayLayer = new MediaOverlayLayer();

            mediaOverlayLayer.Overlays.Add(mediaOverlay);

            composition.OverlayLayers.Add(mediaOverlayLayer);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// カメラ初期化(非同期)
        /// </summary>
        /// <returns></returns>
        private async Task InitWebCameraAsync()
        {
            try
            {
                //mediaCaptureオブジェクトが有効な時は一度Disposeする
                if (mediaCapture != null)
                {
                    mediaCapture.Dispose();
                    mediaCapture = null;
                }

                //キャプチャーの設定情報を保持するインスタンスを作成
                var captureInitSettings = new MediaCaptureInitializationSettings();
                captureInitSettings.VideoDeviceId        = "";
                captureInitSettings.StreamingCaptureMode = StreamingCaptureMode.Video;

                //カメラデバイスの取得
                var cameraDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(
                    Windows.Devices.Enumeration.DeviceClass.VideoCapture);

                //取得結果に応じて分岐
                if (cameraDevices.Count() == 0)                              //取得デバイスなしの場合
                {
                    Debug.WriteLine("No Camera");                            //デバッグ文字列出力
                    return;                                                  //カメラがない場合は関数から出る
                }
                else if (cameraDevices.Count() == 1)                         //1個だけ見つかったとき
                {
                    Debug.WriteLine("count1\n");                             //デバッグ用のメッセージ
                    captureInitSettings.VideoDeviceId = cameraDevices[0].Id; //見つけたデバイスIDを設定
                }
                else                                                         //複数見つけたとき
                {
                    Debug.WriteLine("countelse\n");
                    captureInitSettings.VideoDeviceId = cameraDevices[1].Id;                            //2個目のデバイスIDを設定
                }

                //キャプチャーの準備
                mediaCapture = new MediaCapture();                              //キャプチャインスタンスを作成
                await mediaCapture.InitializeAsync(captureInitSettings);        //キャプチャ設定に従って設定を初期化する

                //ビデオストリームのエンコードに関する設定
                Windows.Media.MediaProperties.VideoEncodingProperties vp =
                    new Windows.Media.MediaProperties.VideoEncodingProperties();

                Debug.WriteLine("before camera size\n");
                //RasperryPiでは解像度が高いと映像が乱れるので小さい解像度にしている
                //ラズパイじゃなければ必要ないかも?

                /*vp.Width = 640;
                 * vp.Height = 480;
                 * vp.Subtype = "RGB24";
                 *
                 * await mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, vp);*/

                //コントロールにキャプチャインスタンスをセット
                CaptureElement_webcam.Source = mediaCapture;

                //キャプチャーの開始
                await mediaCapture.StartPreviewAsync();

                Debug.WriteLine("Camera Initialized");

                //指定周期のタイマを作成・起動
                //コールバック関数にキャプチャインスタンスを渡す、遅延0ms、周期500ms
                this.Timer_capture = new System.Threading.Timer(
                    new System.Threading.TimerCallback(TimerCapFlame),
                    mediaCapture, 0, 500);
            }
            catch (Exception ex)
            {
                Debug.Write(ex.Message);
            }
        }