Szukaj…


Uwagi

W tym przykładzie użyliśmy pakietu Microsoft.ProjectOxford.Vision NuGet: https://www.nuget.org/packages/Microsoft.ProjectOxford.Vision/

Aby przeczytać więcej o Usługach poznawczych Microsoft, zapoznaj się z oficjalną dokumentacją: https://www.microsoft.com/cognitive-services/en-us/computer-vision-api

Przesłana próbka znajduje się na moim GitHubie: https://github.com/Daniel-Krzyczkowski/XamarinIOS/tree/master/XamariniOS_CognitiveServices

Załączam również link do mojego bloga, gdzie przedstawiłem, jak korzystać z usług poznawczych w aplikacji Xamarin Forms: http://mobileprogrammer.pl

Łączenie z Microsoft Cognitive Services

W tym przykładzie nauczysz się korzystać z usług Microsoft Cognitive Services z aplikacją mobilną Xamarin iOS. Użyjemy interfejsu Computer Vision API do wykrycia tego, co jest na zdjęciu.

Po utworzeniu projektu Xamarin.iOS dodaj do projektu poniższy pakiet NuGet:

https://www.nuget.org/packages/Microsoft.ProjectOxford.Vision/

Dzięki tej bibliotece będziemy mogli korzystać z Usług Cognitive Services w naszej aplikacji na iOS. Zakładam, że masz już zarejestrowane konto Microsoft, aby z niego korzystać i włączyłeś Computer Vision Api jak na poniższym ekranie: wprowadź opis zdjęcia tutaj

Po kliknięciu „Subskrybuj” u dołu zostanie wygenerowany klucz API:

wprowadź opis zdjęcia tutaj

Teraz możemy zacząć konfigurować dostęp do Cognitive Services z aplikacji na iOS. Najpierw musimy uzyskać obraz do analizy. Aby to zrobić, możemy użyć Xamarin Media Component dostępnego poniżej: https://components.xamarin.com/view/mediaplugin

Po pomyślnym zainstalowaniu utwórzmy prosty interfejs użytkownika z obrazem i przyciskiem, aby wybrać zdjęcie z galerii. Rozmiar elementów sterujących zależy od Ciebie.

Otwórz Main.storyboard i dodaj UIImageView i kontrolki UIButton domyślnie ViewController. Dodaj imiona: „SelectedPictureImageView” i „SelectButton”:

wprowadź opis zdjęcia tutaj

Teraz powinniśmy dodać moduł obsługi zdarzeń „Touch Up Inside” do obsługi wyboru obrazu:

partial void SelectButtonClick(UIButton sender)
{
    selectImage();
}

async void selectImage()
{
    var selectedImage = await CrossMedia.Current.PickPhotoAsync();
    SelectedPictureImageView.Image =  new UIImage(NSData.FromStream(selectedImage.GetStream()));
}

Teraz chcielibyśmy wyświetlić informacje analityczne, gdy Cognitive Services zwrócą te informacje. Dodaj etykietę pod przyciskiem o nazwie „AnalysisLabel”: wprowadź opis zdjęcia tutaj

Czas połączyć interfejs API Computer Vision!

Aby uzyskać informacje o wybranym obrazku, dodaj poniższą metodę. Pamiętaj, aby wkleić ci klucz API!

async Task analyseImage(Stream imageStream)
{
    try
    {
        VisionServiceClient visionClient = new VisionServiceClient("<<YOUR API KEY HERE>>");
        VisualFeature[] features = { VisualFeature.Tags, VisualFeature.Categories, VisualFeature.Description };
        var analysisResult = await visionClient.AnalyzeImageAsync(imageStream, features.ToList(), null);
        AnalysisLabel.Text = string.Empty;
        analysisResult.Description.Tags.ToList().ForEach(tag => AnalysisLabel.Text = AnalysisLabel.Text + tag + "\n");
    }
    catch (Microsoft.ProjectOxford.Vision.ClientException ex)
    {
        AnalysisLabel.Text = ex.Error.Message;
    }
}

Teraz możesz wywołać go metodą „selectImage”:

async void selectImage()
{
    var selectedImage = await CrossMedia.Current.PickPhotoAsync();
    SelectedPictureImageView.Image =  new UIImage(NSData.FromStream(selectedImage.GetStream()));
    await analyseImage(selectedImage.GetStream());
}

Po wybraniu obrazu Microsoft Cognitive Services przeanalizuje go i zwróci wynik:

wprowadź opis zdjęcia tutaj

Pamiętaj, że Twój obraz nie może być zbyt duży - w takim przypadku otrzymasz informacje takie jak poniżej:

wprowadź opis zdjęcia tutaj

Istnieje wiele innych usług, z których możesz skorzystać. Więcej informacji można znaleźć w oficjalnej dokumentacji (link w załączeniu).



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow