private static BirdAnalysisResult GetBirdAnalysisResult(ImageAnalysis analyzedImage) { var animals = GetAnimals(analyzedImage).ToList(); var imageDescription = MakeSentence(analyzedImage.Description?.Captions?.FirstOrDefault()?.Text); var tags = new List <string>(); tags.AddRange(analyzedImage.Tags?.OrderByDescending(x => x.Confidence).Select(x => x.Name + (string.IsNullOrWhiteSpace(x.Hint) ? "" : $" ({x.Hint})")).ToList() ?? new List <string>()); tags.AddRange(analyzedImage.Description?.Tags ?? new List <string>()); var birdAnalysisMetadata = new BirdAnalysisMetadata { ImageDescription = imageDescription, ImageTags = tags.Distinct().ToList(), ImageWidth = analyzedImage.Metadata.Width, ImageHeight = analyzedImage.Metadata.Height, ImageFormat = analyzedImage.Metadata.Format }; UpdateRectangles(animals, birdAnalysisMetadata); var isBird = GetIsBird(analyzedImage, animals); var animalGroups = GetAnimalGroups(analyzedImage, animals); if (animals.Count == 1 && string.IsNullOrWhiteSpace(animals.First().AnimalGroup)) { if (animalGroups.Any()) { animals.First().AnimalGroup = animalGroups.First().Key; animals.First().AnimalGroupConfidence = animalGroups.First().Value; } } var result = new BirdAnalysisResult { IsBird = isBird.Key, IsBirdConfidence = isBird.Value, Animals = animals, AnimalGroups = animalGroups.Keys.ToList(), Metadata = birdAnalysisMetadata }; result.IsBirdText = GetIsBirdText(result); return(result); }
private static string GetIsBirdText(BirdAnalysisResult birdAnalysisResult) { if (birdAnalysisResult.IsBird) { if (birdAnalysisResult.HasAnimalGroup) { return($"It's a bird ({string.Join(", ", birdAnalysisResult.AnimalGroups)})!"); } return("It's a bird!"); } return("It's not a bird."); }