//Imposta la probabilità minima /* private Double SetProbability() * { * if (Preferences.Get("Probability", "") != null) * { * return Convert.ToDouble(Preferences.Get("Probability", "")); * } * //Valore di default probabilità * else return this.defaultProbabilityValue; * }*/ //Fai le predizioni private async Task MakePredictionAsync(Stream stream) { var current = Connectivity.NetworkAccess; /*Se non c'è connessione notifica l'utente e interrompi il processo*/ if (current != NetworkAccess.Internet) { await DisplayAlert("No Connection.", "In order to scan you need internet access,\n please turn on your internet connection.", "Ok"); return; } //Prendo lo stream e lo faccio diventare bitmap var imageBytes = GetImageAsByteData(stream); //URL di CustomVision var url = SkiasharpServices.GetCustomVisionURL(); //API key di CustomVision var predictionKey = SkiasharpServices.GetAPIKey(); using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Add("Prediction-Key", predictionKey); using (var content = new ByteArrayContent(imageBytes)) { content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream"); var response = await client.PostAsync(url, content); var responseString = await response.Content.ReadAsStringAsync(); var predictions = JsonConvert.DeserializeObject <Response>(responseString); //imposta la probabilità minima var minProbability = 0.7; //visualizza solo predizioni con sicurezza superiore a setProbability var result = predictions.Predictions.Where(p => p.Probability >= minProbability); predictionsResult = result; //lista tagnames filtrata dagli other products foreach (var p in result) { if (!p.TagName.Contains("Products")) { await DBFirebase.Instance.AddHistoryWines(p.TagName, Preferences.Get("UserEmailFirebase", "")); tagnames.Add(p.TagName); } } } } }
public async void Scan(Stream stream, Stream streamRotated) { /*faccio capire all'animazione che è tempo di andare in scena*/ Loading.IsVisible = true; /*esegui le predictions*/ await MakePredictionAsync(stream); Loading.IsVisible = false; /*Bisogna ruotare l'immagine se siamo su iOS*/ if (Device.RuntimePlatform == Device.iOS) { skImage = SkiasharpServices.Rotate(streamRotated); } else if (Device.RuntimePlatform == Device.Android) { skImage = SKBitmap.Decode(streamDraw); } /*Pulisco il canvas per disegnarci sopra*/ ImageCanvas.InvalidateSurface(); /*Se hai trovato qualcosa allora popola la lista dei tag * filtrandola dagli "Other Products"*/ if (predictionsResult != null) { var predictionsFiltered = new List <string>(); foreach (var pred in predictionsResult) { if (!pred.TagName.Contains("Products")) { predictionsFiltered.Add(pred.TagName); } } if (predictionsFiltered.FirstOrDefault() != null) { /*ora il bottone per la lista dei risultati deve diventare visibile*/ After_scan_btn.IsVisible = true; } else { After_scan_btn.IsVisible = false; } } }