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(); } }
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(); }