Краткое руководство. Анализ изображения с использованием пакета SDK API компьютерного зрения для C#Quickstart: Analyze an image using the Computer Vision SDK and C#

Из этого краткого руководства вы узнаете, как с помощью клиентской библиотеки Компьютерного зрения для C# анализировать локальные и удаленные изображения, чтобы извлекать визуальные признаки.In this quickstart, you will analyze both a local and a remote image to extract visual features using the Computer Vision client library for C#. Код из этого руководства можно скачать в виде готового примера приложения в репозитории GitHub Cognitive Services Csharp Vision.If you wish, you can download the code in this guide as a complete sample app from the Cognitive Services Csharp Vision repo on GitHub.

Предварительные требованияPrerequisites

Создание и запуск примера приложенияCreate and run the sample application

Чтобы выполнить наш пример, сделайте следующее:To run the sample, do the following steps:

  1. Создайте консольное приложение Visual C# в Visual Studio.Create a new Visual C# Console App in Visual Studio.

  2. Установите пакет NuGet клиентской библиотеки компьютерного зрения.Install the Computer Vision client library NuGet package.

    1. В меню щелкните Средства, выберите Диспетчер пакетов NuGet, а затем Управление пакетами NuGet для решения.On the menu, click Tools, select NuGet Package Manager, then Manage NuGet Packages for Solution.
    2. Нажмите кнопку Обзор и в поле Поиск введите Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Click the Browse tab, and in the Search box type "Microsoft.Azure.CognitiveServices.Vision.ComputerVision".
    3. Выберите Microsoft.Azure.CognitiveServices.Vision.ComputerVision, установите флажок рядом с именем проекта и щелкните Установить.Select Microsoft.Azure.CognitiveServices.Vision.ComputerVision when it displays, then click the checkbox next to your project name, and Install.
  3. Замените содержимое файла Program.cs кодом, приведенным ниже.Replace the contents of Program.cs with the following code. Методы AnalyzeImageAsync и AnalyzeImageInStreamAsync создают программу-оболочку REST API анализа изображений для удаленных и локальных изображений соответственно.The AnalyzeImageAsync and AnalyzeImageInStreamAsync methods wrap the Analyze Image REST API for remote and local images, respectively.

    using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
    using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Threading.Tasks;
    
    namespace ImageAnalyze
    {
        class Program
        {
            // subscriptionKey = "0123456789abcdef0123456789ABCDEF"
            private const string subscriptionKey = "<SubscriptionKey>";
    
            // localImagePath = @"C:\Documents\LocalImage.jpg"
            private const string localImagePath = @"<LocalImage>";
    
            private const string remoteImageUrl =
                "https://upload.wikimedia.org/wikipedia/commons/3/3c/Shaki_waterfall.jpg";
    
            // Specify the features to return
            private static readonly List<VisualFeatureTypes> features =
                new List<VisualFeatureTypes>()
            {
                VisualFeatureTypes.Categories, VisualFeatureTypes.Description,
                VisualFeatureTypes.Faces, VisualFeatureTypes.ImageType,
                VisualFeatureTypes.Tags
            };
    
            static void Main(string[] args)
            {
                ComputerVisionClient computerVision = new ComputerVisionClient(
                    new ApiKeyServiceClientCredentials(subscriptionKey),
                    new System.Net.Http.DelegatingHandler[] { });
    
                // You must use the same region as you used to get your subscription
                // keys. For example, if you got your subscription keys from westus,
                // replace "westcentralus" with "westus".
                //
                // Free trial subscription keys are generated in the "westus"
                // region. If you use a free trial subscription key, you shouldn't
                // need to change the region.
    
                // Specify the Azure region
                computerVision.Endpoint = "https://westcentralus.api.cognitive.microsoft.com";
    
                Console.WriteLine("Images being analyzed ...");
                var t1 = AnalyzeRemoteAsync(computerVision, remoteImageUrl);
                var t2 = AnalyzeLocalAsync(computerVision, localImagePath);
    
                Task.WhenAll(t1, t2).Wait(5000);
                Console.WriteLine("Press ENTER to exit");
                Console.ReadLine();
            }
    
            // Analyze a remote image
            private static async Task AnalyzeRemoteAsync(
                ComputerVisionClient computerVision, string imageUrl)
            {
                if (!Uri.IsWellFormedUriString(imageUrl, UriKind.Absolute))
                {
                    Console.WriteLine(
                        "\nInvalid remoteImageUrl:\n{0} \n", imageUrl);
                    return;
                }
    
                ImageAnalysis analysis =
                    await computerVision.AnalyzeImageAsync(imageUrl, features);
                DisplayResults(analysis, imageUrl);
            }
    
            // Analyze a local image
            private static async Task AnalyzeLocalAsync(
                ComputerVisionClient computerVision, string imagePath)
            {
                if (!File.Exists(imagePath))
                {
                    Console.WriteLine(
                        "\nUnable to open or read localImagePath:\n{0} \n", imagePath);
                    return;
                }
    
                using (Stream imageStream = File.OpenRead(imagePath))
                {
                    ImageAnalysis analysis = await computerVision.AnalyzeImageInStreamAsync(
                        imageStream, features);
                    DisplayResults(analysis, imagePath);
                }
            }
    
            // Display the most relevant caption for the image
            private static void DisplayResults(ImageAnalysis analysis, string imageUri)
            {
                Console.WriteLine(imageUri);
                if (analysis.Description.Captions.Count != 0)
                {
                    Console.WriteLine(analysis.Description.Captions[0].Text + "\n");
                }
                else
                {
                    Console.WriteLine("No description generated.");
                }
            }
        }
    }
    
  4. Замените <Subscription Key> действительным ключом подписки.Replace <Subscription Key> with your valid subscription key.

  5. При необходимости замените computerVision.Endpoint регионом Azure, связанным с ключами подписки.Change computerVision.Endpoint to the Azure region associated with your subscription keys, if necessary.

  6. Замените <LocalImage> на путь и имя файла локального изображения.Replace <LocalImage> with the path and file name of a local image.

  7. При необходимости задайте remoteImageUrl другой URL-адрес изображения.Optionally, set remoteImageUrl to a different image URL.

  8. Запустите программу.Run the program.

Изучите ответ.Examine the response

При успешном выполнении в ответе будет отображаться наиболее релевантная подпись для каждого изображения.A successful response displays the most relevant caption for each image. Вы можете изменить метод DisplayResults для вывода других данных изображения.You can change the DisplayResults method to output different image data. Дополнительные сведения см. в описании метода AnalyzeLocalAsync.See the AnalyzeLocalAsync method to learn more.

Пример необработанных данных в формате JSON см. в статье Краткое руководство. Анализ локального изображения с помощью REST API компьютерного зрения и C#.See API Quickstarts: Analyze a local image with C# for an example of a raw JSON output.

https://upload.wikimedia.org/wikipedia/commons/3/3c/Shaki_waterfall.jpg
a large waterfall over a rocky cliff

Дополнительная информацияNext steps

Ознакомьтесь с API-интерфейсами компьютерного зрения, которые позволяют анализировать изображения, обнаруживать знаменитостей и достопримечательности, создавать эскизы, извлекать печатный и рукописный текст.Explore the Computer Vision APIs used to analyze an image, detect celebrities and landmarks, create a thumbnail, and extract printed and handwritten text.