Exemplo n.º 1
0
        private async void Recognize_Click(object sender, RoutedEventArgs e)
        {
            var bitmap = Inker.GetCropedSoftwareBitmap(newWidth: 227, newHeight: 227, keepRelativeSize: true);
            var frame  = VideoFrame.CreateWithSoftwareBitmap(bitmap);
            var input  = new CNTKGraphModelInput()
            {
                Input3 = frame
            };

            var output = await model.EvaluateAsync(input);

            var highestValue = output.Plus258_Output_0.OrderByDescending(x => x).ToArray();
            var guessedValue = "N/A";

            for (int i = 0; i < output.Plus258_Output_0.Count; i++)
            {
                if (output.Plus258_Output_0[i] == highestValue[0])
                {
                    guessedValue = i.ToString();
                }
            }
            //var guessedTag = output.Plus258_Output_0.OrderBy(x => x).First();
            //var guessedPercentage = output.Plus258_Output_0..loss.OrderByDescending(kv => kv.Value).First().Value;
            RecognizedInk.Text = guessedValue;
        }
        public async Task Hide()
        {
            ((App)(App.Current)).BackRequested -= PhotoPreviewView_BackRequested;
            SizeChanged           -= PhotoPreviewView_SizeChanged;
            ImageRoot.SizeChanged -= ImageRoot_SizeChanged;

            IsVisible = false;

            var splitChar = _photo.IsLocal ? '\\' : '/';
            var filename  = (_photo.Uri.Split(splitChar).LastOrDefault()?.Split('.').FirstOrDefault() ?? "");

            var saveInkTask          = Inker.SaveInkToFile($"ink_{filename}.gif");
            var saveThumbnailTask    = InkHelpers.RenderImageWithInkToFileAsync(Inker, await _file.OpenReadAsync(), $"thumb_{filename}.jpg");
            var closingAnimationTask = Root.Scale(1.2f, 1.2f, (float)ActualWidth / 2, (float)ActualHeight / 2).Fade(0).StartAsync();

            await Task.WhenAll(saveInkTask, closingAnimationTask, saveThumbnailTask);

            _photo.InkUri       = saveInkTask.Result ?? _photo.InkUri;
            _photo.ThumbnailUri = saveThumbnailTask.Result ?? _photo.ThumbnailUri;


            Root.Visibility = Visibility.Collapsed;

            _canvasImage.Dispose();
            _canvasImage = null;

            _photo = null;
            _file  = null;

            ImageCanvas.Invalidate();

            FinishedHiding?.Invoke(this, null);

            _tags.Clear();
            _knownFaces.Clear();
            _facePanels.Clear();
            FaceCanvas.Children.Clear();

            if (Description != null)
            {
                Description.Text = "";
            }

            _effectsGenerator = null;

            FiltersButton.IsChecked = false;
            DetailsButton.IsChecked = false;
            InkButton.IsChecked     = false;
            Inker.InkPresenter.StrokeContainer.Clear();

            _photoInfoInitialized = false;

            if (EffectsView != null)
            {
                EffectsView.Visibility = Visibility.Collapsed;
                _effects.Clear();
            }
        }
Exemplo n.º 3
0
        private async void InkPresenter_StrokesCollectedAsync(InkPresenter sender, InkStrokesCollectedEventArgs args)
        {
            var bitmap = Inker.GetCropedSoftwareBitmap(newWidth: 227, newHeight: 227, keepRelativeSize: true);
            var frame  = VideoFrame.CreateWithSoftwareBitmap(bitmap);
            var input  = new ModelInput()
            {
                data = frame
            };

            var output = await model.EvaluateAsync(input);

            var guessedTag        = output.classLabel.First();
            var guessedPercentage = output.loss.OrderByDescending(kv => kv.Value).First().Value;

            if (guessedPercentage < 0.9)
            {
                SubText.Text = $"draw {currentShape} to snooze - don't know what that is";
            }
            else if (guessedTag != currentShape)
            {
                SubText.Text = $"draw {currentShape} to snooze - you drew {guessedTag}";
            }
            else
            {
                AlarmOn = false;
                foreach (var stroke in Inker.InkPresenter.StrokeContainer.GetStrokes())
                {
                    var attributes = stroke.DrawingAttributes;
                    attributes.PencilProperties.Opacity = 1;
                    attributes.Color         = Colors.DarkBlue;
                    attributes.Size          = new Size(60, 60);
                    stroke.DrawingAttributes = attributes;
                    stroke.PointTransform    = Matrix3x2.CreateScale(2, new Vector2((float)ActualWidth / 2, (float)ActualHeight / 2));
                }
            }

            Debug.WriteLine($"Current guess: {guessedTag}({guessedPercentage})");
        }
        public async Task ShowAsync(PhotoData photo)
        {
            if (photo == null || photo.Uri == null)
            {
                return;
            }

            Root.Opacity    = 0;
            Root.Visibility = Visibility.Visible;

            LoadingScreen.Opacity          = 1;
            LoadingScreen.IsHitTestVisible = true;
            ProgressRing.IsActive          = true;

            await Root.Scale(1.2f, 1.2f, (float)ActualWidth / 2, (float)ActualHeight / 2, 0).Then()
            .Fade(1).Scale(1, 1, (float)ActualWidth / 2, (float)ActualHeight / 2).StartAsync();

            _photo = photo;
            var uri = new Uri(photo.Uri);

            if (uri.IsFile)
            {
                _file = await StorageFile.GetFileFromPathAsync(photo.Uri);
            }
            else
            {
                _file = await StorageFile.CreateStreamedFileFromUriAsync("photo.jpg", uri, null);
            }

            if (_file == null)
            {
                Hide();
                return;
            }

            var stream = await _file.OpenReadAsync();

            _canvasImage = await CanvasBitmap.LoadAsync(ImageCanvas, stream);

            var imgBounds = _canvasImage.GetBounds(ImageCanvas);

            //var size = Math.Min(imgBounds.Height, imgBounds.Width);

            ImageCanvas.Height = 1200;
            ImageCanvas.Width  = 950;

            _selectedEffectType = EffectType.none;
            ImageCanvas.Invalidate();

            if (_photo.InkUri != null)
            {
                Inker.LoadInkFromFile(_photo.InkUri);
            }

            if (App.IsXbox())
            {
                DetailsButton.Focus(FocusState.Keyboard);
            }

            SetCanvasSize();

            SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
            ((App)(App.Current)).BackRequested += PhotoPreviewView_BackRequested;

            SizeChanged           += PhotoPreviewView_SizeChanged;
            ImageRoot.SizeChanged += ImageRoot_SizeChanged;
            SetCanvasSize();

            LoadingScreen.Fade(0, 300).Start();
            ProgressRing.IsActive          = false;
            LoadingScreen.IsHitTestVisible = false;

            FinishedShowing?.Invoke(this, null);

            IsVisible = true;

            AnalyzeFaces();
        }