Пример: изучение приложения для обработки изображений с использованием C#Sample: Explore an image processing app with C#

Изучите базовое приложение Windows, в котором используется API компьютерного зрения для оптического распознавания символов и создания интеллектуально обрезанных эскизов, а также для обнаружения, классификации, добавления тегов и описания визуальных признаков изображения, включая лица.Explore a basic Windows application that uses Computer Vision to perform optical character recognition (OCR), create smart-cropped thumbnails, plus detect, categorize, tag and describe visual features, including faces, in an image. Приведенный ниже пример позволяет отправить URL-адрес изображения или локально хранящийся файл.The below example lets you submit an image URL or a locally stored file. Вы можете использовать этот пример с открытым кодом в качестве шаблона для создания собственного приложения для Windows с использованием API компьютерного зрения и Windows Presentation Foundation (WPF), входящего в состав .NET Framework.You can use this open source example as a template for building your own app for Windows using the Computer Vision API and Windows Presentation Foundation (WPF), a part of .NET Framework.

  • Получите пример приложения из GitHubGet the sample app from GitHub
  • Откройте и создайте пример приложения в Visual StudioOpen and build the sample app in Visual Studio
  • Запустите пример приложения и поэкспериментируйте в нем с разными сценариямиRun the sample app and interact with it to perform various scenarios
  • Изучите различные сценарии в примере приложенияExplore the various scenarios included with the sample app

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

Прежде чем исследовать пример приложения, убедитесь, что выполнены следующие предварительные требования:Before exploring the sample app, ensure that you've met the following prerequisites:

Получение примера приложенияGet the sample app

Пример приложения API компьютерного зрения можно найти на GitHub в репозитории Microsoft/Cognitive-Vision-Windows.The Computer Vision sample app is available on GitHub from the Microsoft/Cognitive-Vision-Windows repository. Этот репозиторий также включает репозиторий Microsoft/Cognitive-Common-Windows как подмодуль Git.This repository also includes the Microsoft/Cognitive-Common-Windows repository as a Git submodule. Вы можете рекурсивно клонировать этот репозиторий, включая подмодуль, с помощью команды git clone --recurse-submodules из командной строки или с помощью GitHub Desktop.You can recursively clone this repository, including the submodule, either by using the git clone --recurse-submodules command from the command line, or by using GitHub Desktop.

Например, чтобы рекурсивно клонировать репозиторий для примера приложения API компьютерного зрения из командной строки, выполните следующую команду:For example, to recursively clone the repository for the Computer Vision sample app from a command prompt, run the following command:

git clone --recurse-submodules https://github.com/Microsoft/Cognitive-Vision-Windows.git

Важно!

Не загружайте этот репозиторий как ZIP-файл.Do not download this repository as a ZIP. Git не включает подмодули при загрузке репозитория как ZIP-файла.Git doesn't include submodules when downloading a repository as a ZIP.

Получите примеры изображений (необязательно)Get optional sample images

При необходимости вы можете использовать примеры изображений в примере приложения API распознавания лиц, доступном на GitHub в репозитории Microsoft/Cognitive-Face-Windows.You can optionally use the sample images included with the Face sample app, available on GitHub from the Microsoft/Cognitive-Face-Windows repository. Этот образец приложения включает папку /Data с несколькими изображениями людей.That sample app includes a folder, /Data, which contains multiple images of people. Вы можете рекурсивно клонировать и этот репозиторий, с помощью методов, описанных для примера приложения API компьютерного зрения.You can recursively clone this repository, as well, by the methods described for the Computer Vision sample app.

Например, чтобы рекурсивно клонировать репозиторий для примера приложения API распознавания лиц из командной строки, выполните следующую команду:For example, to recursively clone the repository for the Face sample app from a command prompt, run the following command:

git clone --recurse-submodules https://github.com/Microsoft/Cognitive-Face-Windows.git

Откройте и создайте пример приложения в Visual StudioOpen and build the sample app in Visual Studio

Сначала необходимо создать пример приложения, чтобы разрешить зависимости в Visual Studio, прежде чем можно будет запустить или изучить пример приложения.You must build the sample app first, so that Visual Studio can resolve dependencies, before you can run or explore the sample app. Чтобы открыть и создать пример приложения, выполните следующие действия:To open and build the sample app, do the following steps:

  1. Откройте файл решения Visual Studio /Sample-WPF/VisionAPI-WPF-Samples.sln в Visual Studio.Open the Visual Studio solution file, /Sample-WPF/VisionAPI-WPF-Samples.sln, in Visual Studio.

  2. Убедитесь, что решение Visual Studio содержит два проекта:Ensure that the Visual Studio solution contains two projects:

    • SampleUserControlLibrarySampleUserControlLibrary
    • VisionAPI-WPF-SamplesVisionAPI-WPF-Samples

    Если проект SampleUserControlLibrary отсутствует, убедитесь, что рекурсивно клонировали репозиторий Microsoft/Cognitive-Vision-Windows.If the SampleUserControlLibrary project is unavailable, confirm that you've recursively cloned the Microsoft/Cognitive-Vision-Windows repository.

  3. В Visual Studio нажмите клавиши CTRL+SHIFT+B или выберите Сборка в меню ленты, а затем Сборка решения, чтобы собрать решение.In Visual Studio, either press Ctrl+Shift+B or choose Build from the ribbon menu and then choose Build Solution to build the solution.

Запустите пример приложения и испытайте егоRun and interact with the sample app

Вы можете запустить пример приложения, чтобы увидеть, как он взаимодействует с вами и с клиентской библиотекой API компьютерного зрения при выполнении различных задач, таких как создание эскизов или добавления тегов.You can run the sample app, to see how it interacts with you and with the Computer Vision client library when performing various tasks, such as generating thumbnails or tagging images. Чтобы запустить пример приложения и испытать его, выполните следующие действия:To run and interact with the sample app, do the following steps:

  1. После завершения сборки нажмите клавишу F5 или выберите Отладка в меню ленты, а затем Начать отладку, чтобы запустить пример приложения.After the build is complete, either press F5 or choose Debug from the ribbon menu and then choose Start debugging to run the sample app.

  2. При отображении примера приложения выберите Управление ключами подписки в области навигации, чтобы перейти на страницу управления ключами подписки.When the sample app is displayed, choose Subscription Key Management from the navigation pane to display the Subscription Key Management page. Страница управления ключами подпискиSubscription Key Management page

  3. Введите ключ подписки в поле Ключ подписки.Enter your subscription key in Subscription Key.

  4. Введите URL-адрес конечной точки без /vision/v1.0 для ресурса API компьютерного зрения для ключа подписки в поле Конечная точка.Enter the endpoint URL, omitting the /vision/v1.0, of the Computer Vision resource for your subscription key in Endpoint.
    Например, если вы используете ключ подписки из бесплатной пробной версии API компьютерного зрения, введите следующий URL-адрес конечной точки для региона Azure "Центрально-западная часть США": https://westcentralus.api.cognitive.microsoft.comFor example, if you're using the subscription key from the Computer Vision free trial, enter the following endpoint URL for the West Central US Azure region: https://westcentralus.api.cognitive.microsoft.com

  5. Если вы не хотите вводить ключ подписки и URL-адрес конечной точки при следующем запуске примера приложения, выберите Сохранить параметр, чтобы сохранить ключ подписки и URL-адрес конечной точки на компьютере.If you don't want to enter your subscription key and endpoint URL the next time you run the sample app, choose Save Setting to save the subscription key and endpoint URL to your computer. Если вы хотите удалить ранее сохраненный ключ подписки и URL-адрес конечной точки, выберите Удалить параметр.If you want to delete your previously-saved subscription key and endpoint URL, choose Delete Setting.

    Примечание

    В примере приложения используется изолированное хранилище и System.IO.IsolatedStorage для хранения вашего ключа подписки и URL-адреса конечной точки.The sample app uses isolated storage, and System.IO.IsolatedStorage, to store your subscription key and endpoint URL.

  6. В разделе Выбрать сценарий на панели навигации выберите один из сценариев, включенных в пример приложения:Under Select a scenario in the navigation pane, select one of the scenarios currently included with the sample app:

    СценарийScenario ОПИСАНИЕDescription
    Анализ изображенияAnalyze Image Использует операцию Анализ изображения для анализа локальных или удаленных изображений.Uses the Analyze Image operation to analyze a local or remote image. Вы можете выбрать визуальные характеристики и язык для анализа и просмотреть изображение и результаты.You can choose the visual features and language for the analysis, and see both the image and the results.
    Анализ изображения с помощью модели предметной областиAnalyze Image with Domain Model Использует операцию Список моделей для предметной области, чтобы получить список моделей предметной области, из которых можно выбирать, и операцию Распознавание содержимого предметной области для анализа локальных или удаленных изображений с помощью выбранной модели предметной области.Uses the List Domain Specific Models operation to list the domain models from which you can select, and the Recognize Domain Specific Content operation to analyze a local or remote image using the selected domain model. Вы также можете выбрать язык для анализа.You can also choose the language for the analysis.
    Описание изображенияDescribe Image Использует операцию Описание изображения, чтобы создать понятное описание локального или удаленного изображения.Uses the Describe Image operation to create a human-readable description of a local or remote image. Вы также можете выбрать язык описания.You can also choose the language for the description.
    Создание теговGenerate Tags Использует операцию Тег изображения, чтобы помечать тегами визуальные характеристики локального или удаленного изображения.Uses the Tag Image operation to tag the visual features of a local or remote image. Вы также можете выбрать язык для тегов.You can also choose the language used for the tags.
    Распознавание текста (OCR)Recognize Text (OCR) Использует операцию OCR, чтобы распознать и извлечь печатный текст из изображения.Uses the OCR operation to recognize and extract printed text from an image. Вы можете выбрать язык самостоятельно или разрешить API компьютерного зрения определить язык автоматически.You can either choose the language to use, or let Computer Vision auto-detect the language.
    Распознавание текста V2 (на английском языке)Recognize Text V2 (English) Использует операции Распознавание текста и Получить результат операции распознавания текста, чтобы асинхронно распознать и извлечь рукописный или печатный текст из изображения.Uses the Recognize Text and Get Recognize Text Operation Result operations to asynchronously recognize and extract printed or handwritten text from an image.
    Получение эскизаGet Thumbnail Использует операцию Получить эскиз, чтобы создать эскиз для локального или удаленного изображения.Uses the Get Thumbnail operation to generate a thumbnail for a local or remote image.

    На снимке экрана показана страница, предоставленная для сценария анализа изображений после анализа примера изображения.The following screenshot illustrates the page provided for the Analyze Image scenario, after analyzing a sample image. Снимок экрана страницы "Анализ изображений"Screenshot of the Analyze image page

Изучите пример приложенияExplore the sample app

Решение Visual Studio для примера приложения API компьютерного зрения содержит два проекта:The Visual Studio solution for the Computer Vision sample app contains two projects:

  • SampleUserControlLibrarySampleUserControlLibrary
    Проект SampleUserControlLibrary предоставляет функциональные возможности, общие для нескольких примеров Cognitive Services.The SampleUserControlLibrary project provides functionality shared by multiple Cognitive Services samples. Проект содержит следующие элементы:The project contains the following:
    • SampleScenariosSampleScenarios
      Элемент управления UserControl, который предоставляет стандартизированное представление, например заголовок окна, панель навигации и панель содержимого, для примеров.A UserControl that provides a standardized presentation, such as the title bar, navigation pane, and content pane, for samples. Пример приложения API компьютерного зрения использует этот элемент управления в окне MainWindow.xaml для отображения страницы со сценариями и получения доступа к информации, которая используется совместно в разных сценариях, например ключ подписки и URL-адрес конечной точки.The Computer Vision sample app uses this control in the MainWindow.xaml window to display scenario pages and access information shared across scenarios, such as the subscription key and endpoint URL.
    • SubscriptionKeyPageSubscriptionKeyPage
      Страница Page, которая предоставляет стандартизированный макет для ввода ключа подписки и URL-адреса конечной точки для примера приложения.A Page that provides a standardized layout for entering a subscription key and endpoint URL for the sample app. Пример приложения API компьютерного зрения использует эту страницу для управления ключом подписки и URL-адресом конечной точки для страниц сценариев.The Computer Vision sample app uses this page to manage the subscription key and endpoint URL used by the scenario pages.
    • VideoResultControlVideoResultControl
      Элемент управления UserControl, который предоставляет стандартизированное представление для сведений о видео.A UserControl that provides a standardized presentation for video information. Пример приложения API компьютерного зрения не использует этот элемент управления.The Computer Vision sample app doesn't use this control.
  • VisionAPI-WPF-SamplesVisionAPI-WPF-Samples
    Основной проект для примера приложения компьютерного зрения. Он содержит все функциональные возможности для API компьютерного зрения.The main project for the Computer Vision sample app, this project contains all of the interesting functionality for Computer Vision. Проект содержит следующие элементы:The project contains the following:
    • AnalyzeInDomainPage.xamlAnalyzeInDomainPage.xaml
      Страница со сценарием для сценария анализа изображения с помощью модели предметной области.The scenario page for the Analyze Image with Domain Model scenario.
    • AnalyzeImage.xamlAnalyzeImage.xaml
      Страница со сценарием для сценария анализа изображения.The scenario page for the Analyze Image scenario.
    • DescribePage.xamlDescribePage.xaml
      Страница со сценарием для сценария описания изображения.The scenario page for the Describe Image scenario.
    • ImageScenarioPage.csImageScenarioPage.cs
      Класс ImageScenarioPage, от которого происходят все страницы сценариев в примере приложения.The ImageScenarioPage class, from which all of the scenario pages in the sample app are derived. Этот класс управляет функциональными возможностями, например, предоставление учетных данных и форматирование выходных данных, которые используются всеми страницами сценариев.This class manages functionality, such as providing credentials and formatting output, shared by all of the scenario pages.
    • MainWindow.xaml:MainWindow.xaml
      Главное окно для примера приложения. Оно использует элемент управления SampleScenarios для представления SubscriptionKeyPage и страниц сценариев.The main window for the sample app, it uses the SampleScenarios control to present the SubscriptionKeyPage and scenario pages.
    • OCRPage.xamlOCRPage.xaml
      Страница сценария для сценария распознавания текста (OCR).The scenario page for the Recognize Text (OCR) scenario.
    • RecognizeLanguage.csRecognizeLanguage.cs
      Класс RecognizeLanguage, который предоставляет сведения о языках, поддерживаемых различными методами в примере приложения.The RecognizeLanguage class, which provides information about the languages supported by the various methods in the sample app.
    • TagsPage.xamlTagsPage.xaml
      Страница сценария для сценария создания тегов.The scenario page for the Generate Tags scenario.
    • TextRecognitionPage.xamlTextRecognitionPage.xaml
      Страница сценария для сценария распознавания текста V2 (на английском языке).The scenario page for the Recognize Text V2 (English) scenario.
    • ThumbnailPage.xamlThumbnailPage.xaml
      Страница сценария для сценария получения эскиза.The scenario page for the Get Thumbnail scenario.

Изучение примера кодаExplore the sample code

Важные фрагменты примера кода выделены примечаниями, которые начинаются с KEY SAMPLE CODE STARTS HERE и заканчиваются KEY SAMPLE CODE ENDS HERE, чтобы упростить изучение примера приложения.Key portions of sample code are framed with comment blocks that start with KEY SAMPLE CODE STARTS HERE and end with KEY SAMPLE CODE ENDS HERE, to make it easier for you to explore the sample app. Эти важные фрагменты примера кода содержат код, лучше всего демонстрирующий, как использовать клиентскую библиотеку API компьютерного зрения для выполнения различных задач.These key portions of sample code contain the code most relevant to learning how to use the Computer Vision API client library to do various tasks. Найдите KEY SAMPLE CODE STARTS HERE в Visual Studio для перемещения между наиболее интересными разделами кода в примере приложения API компьютерного зрения.You can search for KEY SAMPLE CODE STARTS HERE in Visual Studio to move between the most relevant sections of code in the Computer Vision sample app.

Например, метод UploadAndAnalyzeImageAsync, показанный ниже и включенный в AnalyzePage.xaml, демонстрирует, как использовать клиентскую библиотеку для анализа локального изображения путем вызова метода ComputerVisionClient.AnalyzeImageInStreamAsync.For example, the UploadAndAnalyzeImageAsync method, shown following and included in AnalyzePage.xaml, demonstrates how to use the client library to analyze a local image by invoking the ComputerVisionClient.AnalyzeImageInStreamAsync method.

private async Task<ImageAnalysis> UploadAndAnalyzeImageAsync(string imageFilePath)
{
    // -----------------------------------------------------------------------
    // KEY SAMPLE CODE STARTS HERE
    // -----------------------------------------------------------------------

    //
    // Create Cognitive Services Vision API Service client.
    //
    using (var client = new ComputerVisionClient(Credentials) { Endpoint = Endpoint })
    {
        Log("ComputerVisionClient is created");

        using (Stream imageFileStream = File.OpenRead(imageFilePath))
        {
            //
            // Analyze the image for all visual features.
            //
            Log("Calling ComputerVisionClient.AnalyzeImageInStreamAsync()...");
            VisualFeatureTypes[] visualFeatures = GetSelectedVisualFeatures();
            string language = (_language.SelectedItem as RecognizeLanguage).ShortCode;
            ImageAnalysis analysisResult = await client.AnalyzeImageInStreamAsync(imageFileStream, visualFeatures, null, language);
            return analysisResult;
        }
    }

    // -----------------------------------------------------------------------
    // KEY SAMPLE CODE ENDS HERE
    // -----------------------------------------------------------------------
}

Клиентская библиотекаExplore the client library

В этом примере приложение использует клиентскую библиотеку API компьютерного зрения, тонкую клиентскую программу-оболочку C# для API компьютерного зрения в Azure Cognitive Services.This sample app uses the Computer Vision API client library, a thin C# client wrapper for the Computer Vision API in Azure Cognitive Services. Клиентская библиотека доступна в NuGet в пакете Microsoft.Azure.CognitiveServices.Vision.ComputerVision.The client library is available from NuGet in the Microsoft.Azure.CognitiveServices.Vision.ComputerVision package. При сборке приложения Visual Studio вы извлекли клиентскую библиотеку из соответствующего пакета NuGet.When you built the Visual Studio application, you retrieved the client library from its corresponding NuGet package. Вы также можете просмотреть исходный код для клиентской библиотеки в папке /ClientLibrary репозитория Microsoft/Cognitive-Vision-Windows.You can also view the source code for the client library in the /ClientLibrary folder of the Microsoft/Cognitive-Vision-Windows repository.

Функциональные возможности клиентской библиотеки сосредоточены вокруг класса ComputerVisionClient в пространстве имен Microsoft.Azure.CognitiveServices.Vision.ComputerVision, а модели, используемые классом ComputerVisionClient при взаимодействии с API компьютерного зрения, находятся в пространстве имен Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models.The client library's functionality centers around the ComputerVisionClient class, in the Microsoft.Azure.CognitiveServices.Vision.ComputerVision namespace, while the models used by the ComputerVisionClient class when interacting with Computer Vision are found in the Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models namespace. На различных страницах сценариев XAML, включенных в пример приложения, вы найдете следующие директивы using для этих пространств имен:In the various XAML scenario pages included with the sample app, you'll find the following using directives for those namespaces:

// -----------------------------------------------------------------------
// KEY SAMPLE CODE STARTS HERE
// Use the following namespace for ComputerVisionClient.
// -----------------------------------------------------------------------
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
// -----------------------------------------------------------------------
// KEY SAMPLE CODE ENDS HERE
// -----------------------------------------------------------------------

Подробнее о различных методах, включенных в класс ComputerVisionClient, вы узнаете при изучении сценариев из примера приложения API компьютерного зрения.You'll learn more about the various methods included with the ComputerVisionClient class as you explore the scenarios included with the Computer Vision sample app.

Сценарий анализа изображенийExplore the Analyze Image scenario

Этот сценарий управляется страницей AnalyzePage.xaml.This scenario is managed by the AnalyzePage.xaml page. Вы можете выбрать визуальные характеристики и язык для анализа и просмотреть изображение и результаты.You can choose the visual features and language for the analysis, and see both the image and the results. Для этого страница сценария использует один из следующих методов в зависимости от источника изображения:The scenario page does this by using one of the following methods, depending on the source of the image:

  • UploadAndAnalyzeImageAsyncUploadAndAnalyzeImageAsync
    Этот метод используется для локальных изображений, в которых изображение должно быть закодировано как Stream и отправлено в API компьютерного зрения путем вызова метода ComputerVisionClient.AnalyzeImageInStreamAsync.This method is used for local images, in which the image must be encoded as a Stream and sent to Computer Vision by calling the ComputerVisionClient.AnalyzeImageInStreamAsync method.
  • AnalyzeUrlAsyncAnalyzeUrlAsync
    Этот метод используется для удаленных изображений, в которых URL-адрес изображения отправляется в API компьютерного зрения путем вызова метода ComputerVisionClient.AnalyzeImageAsync.This method is used for remote images, in which the URL for the image is sent to Computer Vision by calling the ComputerVisionClient.AnalyzeImageAsync method.

Метод UploadAndAnalyzeImageAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The UploadAndAnalyzeImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Так как пример приложения анализирует локальное изображение, он должен отправить содержимое этого изображения в API компьютерного зрения.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Он открывает локальный файл, указанный в imageFilePath, для чтения в виде Stream, а затем получает визуальные характеристики и язык, выбранные на странице сценария.It opens the local file specified in imageFilePath for reading as a Stream, then gets the visual features and language selected in the scenario page. Он вызывает метод ComputerVisionClient.AnalyzeImageInStreamAsync, передавая Stream для файла, визуальные характеристики и язык, а затем возвращает результат в виде экземпляра ImageAnalysis.It calls the ComputerVisionClient.AnalyzeImageInStreamAsync method, passing the Stream for the file, the visual features, and the language, then returns the result as an ImageAnalysis instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Метод AnalyzeUrlAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The AnalyzeUrlAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Он возвращает визуальные характеристики и язык, выбранные на странице сценария.It gets the visual features and language selected in the scenario page. Он вызывает метод ComputerVisionClient.AnalyzeImageInStreamAsync, передавая URL-адрес изображения, визуальные характеристики и язык, а затем возвращает результат в виде экземпляра ImageAnalysis.It calls the ComputerVisionClient.AnalyzeImageInStreamAsync method, passing the image URL, the visual features, and the language, then returns the result as an ImageAnalysis instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Сценарий анализа изображения с помощью модели предметной областиExplore the Analyze Image with Domain Model scenario

Этот сценарий управляется страницей AnalyzeInDomainPage.xaml.This scenario is managed by the AnalyzeInDomainPage.xaml page. Вы можете выбрать модель предметной области, например celebrities или landmarks, и язык для выполнения анализа изображения для определенной предметной области, и просмотреть изображение и результаты.You can choose a domain model, such as celebrities or landmarks, and language to perform a domain-specific analysis of the image, and see both the image and the results. Страница сценария использует следующие методы в зависимости от источника изображения:The scenario page uses the following methods, depending on the source of the image:

  • GetAvailableDomainModelsAsyncGetAvailableDomainModelsAsync
    Этот метод возвращает список моделей предметной области из API компьютерного зрения и заполняет элемент управления ComboBox _domainModelComboBox на странице с помощью метода ComputerVisionClient.ListModelsAsync.This method gets the list of available domain models from Computer Vision and populates the _domainModelComboBox ComboBox control on the page, using the ComputerVisionClient.ListModelsAsync method.
  • UploadAndAnalyzeInDomainImageAsyncUploadAndAnalyzeInDomainImageAsync
    Этот метод используется для локальных изображений, в которых изображение должно быть закодировано как Stream и отправлено в API компьютерного зрения путем вызова метода ComputerVisionClient.AnalyzeImageByDomainInStreamAsync.This method is used for local images, in which the image must be encoded as a Stream and sent to Computer Vision by calling the ComputerVisionClient.AnalyzeImageByDomainInStreamAsync method.
  • AnalyzeInDomainUrlAsyncAnalyzeInDomainUrlAsync
    Этот метод используется для удаленных изображений, в которых URL-адрес изображения отправляется в API компьютерного зрения путем вызова метода ComputerVisionClient.AnalyzeImageByDomainAsync.This method is used for remote images, in which the URL for the image is sent to Computer Vision by calling the ComputerVisionClient.AnalyzeImageByDomainAsync method.

Метод UploadAndAnalyzeInDomainImageAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The UploadAndAnalyzeInDomainImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Так как пример приложения анализирует локальное изображение, он должен отправить содержимое этого изображения в API компьютерного зрения.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Он открывает локальный файл, указанный в imageFilePath, для чтения в виде Stream, а затем получает язык, выбранный на странице сценария.It opens the local file specified in imageFilePath for reading as a Stream, then gets the language selected in the scenario page. Он вызывает метод ComputerVisionClient.AnalyzeImageByDomainInStreamAsync, передавая Stream для файла, имя предметной области и язык, а затем возвращает результат в виде экземпляра DomainModelResults.It calls the ComputerVisionClient.AnalyzeImageByDomainInStreamAsync method, passing the Stream for the file, the name of the domain model, and the language, then returns the result as an DomainModelResults instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Метод AnalyzeInDomainUrlAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The AnalyzeInDomainUrlAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Он возвращает язык, выбранный на странице сценария.It gets the language selected in the scenario page. Он вызывает метод ComputerVisionClient.AnalyzeImageByDomainAsync, передавая URL-адрес изображения, визуальные характеристики и язык, а затем возвращает результат в виде экземпляра DomainModelResults.It calls the ComputerVisionClient.AnalyzeImageByDomainAsync method, passing the image URL, the visual features, and the language, then returns the result as an DomainModelResults instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Сценарий описания изображенийExplore the Describe Image scenario

Этот сценарий управляется страницей DescribePage.xaml.This scenario is managed by the DescribePage.xaml page. Вы можете выбрать язык для создания понятного описания изображения и просмотреть изображение и результаты.You can choose a language to create a human-readable description of the image, and see both the image and the results. Страница сценария использует следующие методы в зависимости от источника изображения:The scenario page uses the following methods, depending on the source of the image:

  • UploadAndDescribeImageAsyncUploadAndDescribeImageAsync
    Этот метод используется для локальных изображений, в которых изображение должно быть закодировано как Stream и отправлено в API компьютерного зрения путем вызова метода ComputerVisionClient.DescribeImageInStreamAsync.This method is used for local images, in which the image must be encoded as a Stream and sent to Computer Vision by calling the ComputerVisionClient.DescribeImageInStreamAsync method.
  • DescribeUrlAsyncDescribeUrlAsync
    Этот метод используется для удаленных изображений, в которых URL-адрес изображения отправляется в API компьютерного зрения путем вызова метода ComputerVisionClient.DescribeImageAsync.This method is used for remote images, in which the URL for the image is sent to Computer Vision by calling the ComputerVisionClient.DescribeImageAsync method.

Метод UploadAndDescribeImageAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The UploadAndDescribeImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Так как пример приложения анализирует локальное изображение, он должен отправить содержимое этого изображения в API компьютерного зрения.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Он открывает локальный файл, указанный в imageFilePath, для чтения в виде Stream, а затем получает язык, выбранный на странице сценария.It opens the local file specified in imageFilePath for reading as a Stream, then gets the language selected in the scenario page. Он вызывает метод ComputerVisionClient.DescribeImageInStreamAsync, передавая Stream для файла, максимальное количество кандидатов (в этом случае 3) и язык, а затем возвращает результат в виде экземпляра ImageDescription.It calls the ComputerVisionClient.DescribeImageInStreamAsync method, passing the Stream for the file, the maximum number of candidates (in this case, 3), and the language, then returns the result as an ImageDescription instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Метод DescribeUrlAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The DescribeUrlAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Он возвращает язык, выбранный на странице сценария.It gets the language selected in the scenario page. Он вызывает метод ComputerVisionClient.DescribeImageAsync, передавая URL-адрес изображения, максимальное количество кандидатов (в этом случае 3) и язык, а затем возвращает результат в виде экземпляра ImageDescription.It calls the ComputerVisionClient.DescribeImageAsync method, passing the image URL, the maximum number of candidates (in this case, 3), and the language, then returns the result as an ImageDescription instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Сценарий создания теговExplore the Generate Tags scenario

Этот сценарий управляется страницей TagsPage.xaml.This scenario is managed by the TagsPage.xaml page. Вы можете выбрать язык для тегов визуальных характеристик изображения и просмотреть изображение и результаты.You can choose a language to tag the visual features of an image, and see both the image and the results. Страница сценария использует следующие методы в зависимости от источника изображения:The scenario page uses the following methods, depending on the source of the image:

  • UploadAndGetTagsForImageAsyncUploadAndGetTagsForImageAsync
    Этот метод используется для локальных изображений, в которых изображение должно быть закодировано как Stream и отправлено в API компьютерного зрения путем вызова метода ComputerVisionClient.TagImageInStreamAsync.This method is used for local images, in which the image must be encoded as a Stream and sent to Computer Vision by calling the ComputerVisionClient.TagImageInStreamAsync method.
  • GenerateTagsForUrlAsyncGenerateTagsForUrlAsync
    Этот метод используется для удаленных изображений, в которых URL-адрес изображения отправляется в API компьютерного зрения путем вызова метода ComputerVisionClient.TagImageAsync.This method is used for remote images, in which the URL for the image is sent to Computer Vision by calling the ComputerVisionClient.TagImageAsync method.

Метод UploadAndGetTagsForImageAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The UploadAndGetTagsForImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Так как пример приложения анализирует локальное изображение, он должен отправить содержимое этого изображения в API компьютерного зрения.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Он открывает локальный файл, указанный в imageFilePath, для чтения в виде Stream, а затем получает язык, выбранный на странице сценария.It opens the local file specified in imageFilePath for reading as a Stream, then gets the language selected in the scenario page. Он вызывает метод ComputerVisionClient.TagImageInStreamAsync, передавая Stream для файла и язык, а затем возвращает результат в виде экземпляра TagResult.It calls the ComputerVisionClient.TagImageInStreamAsync method, passing the Stream for the file and the language, then returns the result as a TagResult instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Метод GenerateTagsForUrlAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The GenerateTagsForUrlAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Он возвращает язык, выбранный на странице сценария.It gets the language selected in the scenario page. Он вызывает метод ComputerVisionClient.TagImageAsync, передавая URL-адрес изображения и язык, а затем возвращает результат в виде экземпляра TagResult.It calls the ComputerVisionClient.TagImageAsync method, passing the image URL and the language, then returns the result as a TagResult instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Сценарий распознавания текста (OCR)Explore the Recognize Text (OCR) scenario

Этот сценарий управляется страницей OCRPage.xaml.This scenario is managed by the OCRPage.xaml page. Вы можете выбрать язык для распознавания и извлечения печатного текста с изображения и просмотреть изображение и результаты.You can choose a language to recognize and extract printed text from an image, and see both the image and the results. Страница сценария использует следующие методы в зависимости от источника изображения:The scenario page uses the following methods, depending on the source of the image:

  • UploadAndRecognizeImageAsyncUploadAndRecognizeImageAsync
    Этот метод используется для локальных изображений, в которых изображение должно быть закодировано как Stream и отправлено в API компьютерного зрения путем вызова метода ComputerVisionClient.RecognizePrintedTextInStreamAsync.This method is used for local images, in which the image must be encoded as a Stream and sent to Computer Vision by calling the ComputerVisionClient.RecognizePrintedTextInStreamAsync method.
  • RecognizeUrlAsyncRecognizeUrlAsync
    Этот метод используется для удаленных изображений, в которых URL-адрес изображения отправляется в API компьютерного зрения путем вызова метода ComputerVisionClient.RecognizePrintedTextAsync.This method is used for remote images, in which the URL for the image is sent to Computer Vision by calling the ComputerVisionClient.RecognizePrintedTextAsync method.

Метод UploadAndRecognizeImageAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The UploadAndRecognizeImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Так как пример приложения анализирует локальное изображение, он должен отправить содержимое этого изображения в API компьютерного зрения.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Он открывает локальный файл, указанный в imageFilePath, для чтения в виде Stream, а затем получает язык, выбранный на странице сценария.It opens the local file specified in imageFilePath for reading as a Stream, then gets the language selected in the scenario page. Он вызывает метод ComputerVisionClient.RecognizePrintedTextInStreamAsync, указывающий, что ориентация не распознана, и передающий Stream для файла и язык, а затем возвращает результат в виде экземпляра OcrResult.It calls the ComputerVisionClient.RecognizePrintedTextInStreamAsync method, indicating that orientation is not detected and passing the Stream for the file and the language, then returns the result as an OcrResult instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Метод RecognizeUrlAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The RecognizeUrlAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Он возвращает язык, выбранный на странице сценария.It gets the language selected in the scenario page. Он вызывает метод ComputerVisionClient.RecognizePrintedTextAsync, указывающий, что ориентация не распознана, и передающий URL-адрес изображения и язык, а затем возвращает результат в виде экземпляра OcrResult.It calls the ComputerVisionClient.RecognizePrintedTextAsync method, indicating that orientation is not detected and passing the image URL and the language, then returns the result as an OcrResult instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Сценарий распознавания текста V2 (на английском языке)Explore the Recognize Text V2 (English) scenario

Этот сценарий управляется страницей TextRecognitionPage.xaml.This scenario is managed by the TextRecognitionPage.xaml page. Вы можете выбрать режим распознавания и язык для асинхронного распознавания и извлечения рукописного или печатного текста с изображения и просмотреть изображение и результаты.You can choose the recognition mode and a language to asynchronously recognize and extract either printed or handwritten text from an image, and see both the image and the results. Страница сценария использует следующие методы в зависимости от источника изображения:The scenario page uses the following methods, depending on the source of the image:

  • UploadAndRecognizeImageAsyncUploadAndRecognizeImageAsync
    Этот метод используется для локальных изображений, в которых изображение должно быть закодировано как Stream и отправлено в API компьютерного зрения путем вызова метода RecognizeAsync и передачи параметризованного делегата для метода ComputerVisionClient.RecognizeTextInStreamAsync.This method is used for local images, in which the image must be encoded as a Stream and sent to Computer Vision by calling the RecognizeAsync method and passing a parameterized delegate for the ComputerVisionClient.RecognizeTextInStreamAsync method.
  • RecognizeUrlAsyncRecognizeUrlAsync
    Этот метод используется для удаленных изображений, в которых URL-адрес изображения отправляется в API компьютерного зрения путем вызова метода RecognizeAsync и передачи параметризованного делегата для метода ComputerVisionClient.RecognizeTextAsync.This method is used for remote images, in which the URL for the image is sent to Computer Vision by calling the RecognizeAsync method and passing a parameterized delegate for the ComputerVisionClient.RecognizeTextAsync method.
  • RecognizeAsync Этот метод обрабатывает асинхронные вызовы для методов UploadAndRecognizeImageAsync и RecognizeUrlAsync, а также проводит опрос для сбора результатов путем вызова метода ComputerVisionClient.GetTextOperationResultAsync.RecognizeAsync This method handles the asynchronous calling for both the UploadAndRecognizeImageAsync and RecognizeUrlAsync methods, as well as polling for results by calling the ComputerVisionClient.GetTextOperationResultAsync method.

В отличие от других сценариев, включенных в пример приложения API компьютерного зрения, этот сценарий является асинхронным, так как для запуска процесса вызывается один метод, а для проверки состояния и возврата результатов процесса вызывается другой метод.Unlike the other scenarios included in the Computer Vision sample app, this scenario is asynchronous, in that one method is called to start the process, but a different method is called to check on the status and return the results of that process. Логическая последовательность в этом сценарии несколько отличается от других сценариев.The logical flow in this scenario is somewhat different from that in the other scenarios.

Метод UploadAndRecognizeImageAsync открывает локальный файл, указанный в imageFilePath, для чтения в виде Stream, затем вызывает метод RecognizeAsync, передавая:The UploadAndRecognizeImageAsync method opens the local file specified in imageFilePath for reading as a Stream, then calls the RecognizeAsync method, passing:

  • Лямбда-выражение для параметризованного асинхронного делегата метода ComputerVisionClient.RecognizeTextInStreamAsync с Stream для файла и режимом распознавания в качестве параметров в GetHeadersAsyncFunc.A lambda expression for a parameterized asynchronous delegate of the ComputerVisionClient.RecognizeTextInStreamAsync method, with the Stream for the file and the recognition mode as parameters, in GetHeadersAsyncFunc.
  • Лямбда-выражение для делегата для получения значения заголовка ответа Operation-Location в GetOperationUrlFunc.A lambda expression for a delegate to get the Operation-Location response header value, in GetOperationUrlFunc.

Метод RecognizeUrlAsync вызывает метод RecognizeAsync, передавая:The RecognizeUrlAsync method calls the RecognizeAsync method, passing:

  • Лямбда-выражение для параметризованного асинхронного делегата метода ComputerVisionClient.RecognizeTextAsync с URL-адресом удаленного изображения и режимом распознавания в качестве параметров в GetHeadersAsyncFunc.A lambda expression for a parameterized asynchronous delegate of the ComputerVisionClient.RecognizeTextAsync method, with the URL of the remote image and the recognition mode as parameters, in GetHeadersAsyncFunc.
  • Лямбда-выражение для делегата для получения значения заголовка ответа Operation-Location в GetOperationUrlFunc.A lambda expression for a delegate to get the Operation-Location response header value, in GetOperationUrlFunc.

Когда метод RecognizeAsync завершается, методы UploadAndRecognizeImageAsync и RecognizeUrlAsync возвращают результат в виде экземпляра TextOperationResult.When the RecognizeAsync method is completed, both UploadAndRecognizeImageAsync and RecognizeUrlAsync methods return the result as a TextOperationResult instance. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Метод RecognizeAsync вызывает параметризованный делегат для метода ComputerVisionClient.RecognizeTextInStreamAsync или ComputerVisionClient.RecognizeTextAsync, переданного в GetHeadersAsyncFunc, и ожидает ответа.The RecognizeAsync method calls the parameterized delegate for either the ComputerVisionClient.RecognizeTextInStreamAsync or ComputerVisionClient.RecognizeTextAsync method passed in GetHeadersAsyncFunc and waits for the response. Затем метод вызывает делегат, переданный в GetOperationUrlFunc, чтобы получить значение заголовка ответа Operation-Location из ответа.The method then calls the delegate passed in GetOperationUrlFunc to get the Operation-Location response header value from the response. Это значение представляет собой URL-адрес, использованный для получения результатов метода, переданного в GetHeadersAsyncFunc из API компьютерного зрения.This value is the URL used to retrieve the results of the method passed in GetHeadersAsyncFunc from Computer Vision.

Затем метод RecognizeAsync вызывает метод ComputerVisionClient.GetTextOperationResultAsync, передавая URL-адрес, полученный из заголовка ответа Operation-Location, чтобы получить состояние и результат метода, переданного в GetHeadersAsyncFunc.The RecognizeAsync method then calls the ComputerVisionClient.GetTextOperationResultAsync method, passing the URL retrieved from the Operation-Location response header, to get the status and result of the method passed in GetHeadersAsyncFunc. Если состояние не указывает, что метод завершен, успешно или неуспешно, метод RecognizeAsync вызывает ComputerVisionClient.GetTextOperationResultAsync еще три раза и ждет три секунды между вызовами.If the status doesn't indicate that the method completed, successfully or unsuccessfully, the RecognizeAsync method calls ComputerVisionClient.GetTextOperationResultAsync 3 more times, waiting 3 seconds between calls. Метод RecognizeAsync возвращает результаты в метод, который его вызвал.The RecognizeAsync method returns the results to the method that called it.

Сценарий получения эскизаExplore the Get Thumbnail scenario

Этот сценарий управляется страницей ThumbnailPage.xaml.This scenario is managed by the ThumbnailPage.xaml page. Вы можете указать, следует ли использовать интеллектуальную обрезку, а также задать требуемую высоту и ширину, чтобы создать эскиз из изображения и просмотреть изображение и результаты.You can indicate whether to use smart cropping, and specify desired height and width, to generate a thumbnail from an image, and see both the image and the results. Страница сценария использует следующие методы в зависимости от источника изображения:The scenario page uses the following methods, depending on the source of the image:

  • UploadAndThumbnailImageAsyncUploadAndThumbnailImageAsync
    Этот метод используется для локальных изображений, в которых изображение должно быть закодировано как Stream и отправлено в API компьютерного зрения путем вызова метода ComputerVisionClient.GenerateThumbnailInStreamAsync.This method is used for local images, in which the image must be encoded as a Stream and sent to Computer Vision by calling the ComputerVisionClient.GenerateThumbnailInStreamAsync method.
  • ThumbnailUrlAsyncThumbnailUrlAsync
    Этот метод используется для удаленных изображений, в которых URL-адрес изображения отправляется в API компьютерного зрения путем вызова метода ComputerVisionClient.GenerateThumbnailAsync.This method is used for remote images, in which the URL for the image is sent to Computer Vision by calling the ComputerVisionClient.GenerateThumbnailAsync method.

Метод UploadAndThumbnailImageAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The UploadAndThumbnailImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Так как пример приложения анализирует локальное изображение, он должен отправить содержимое этого изображения в API компьютерного зрения.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Он открывает локальный файл, указанный в imageFilePath, для чтения в виде Stream.It opens the local file specified in imageFilePath for reading as a Stream. Он вызывает метод ComputerVisionClient.GenerateThumbnailInStreamAsync, передавая ширину, высоту и Stream для файла, а также указывая, следует ли использовать интеллектуальную обрезку, а затем возвращает результат в виде Stream.It calls the ComputerVisionClient.GenerateThumbnailInStreamAsync method, passing the width, height, the Stream for the file, and whether to use smart cropping, then returns the result as a Stream. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Метод RecognizeUrlAsync создает новый экземпляр ComputerVisionClient с помощью указанного ключа подписки и URL-адреса конечной точки.The RecognizeUrlAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. Он вызывает метод ComputerVisionClient.GenerateThumbnailAsync, передавая ширину, высоту и URL-адрес для изображения, а также указывая, следует ли использовать интеллектуальную обрезку, а затем возвращает результат в виде Stream.It calls the ComputerVisionClient.GenerateThumbnailAsync method, passing the width, height, the URL for the image, and whether to use smart cropping, then returns the result as a Stream. Методы, наследуемые от класса ImageScenarioPage, представляют возвращенные результаты на странице сценария.The methods inherited from the ImageScenarioPage class present the returned results in the scenario page.

Очистка ресурсовClean up resources

Удалите папку, куда вы клонировали репозиторий Microsoft/Cognitive-Vision-Windows, если она вам больше не нужна.When no longer needed, delete the folder into which you cloned the Microsoft/Cognitive-Vision-Windows repository. Если вы решили использовать примеры изображений, также удалите папку, в которую вы клонировали репозиторий Microsoft/Cognitive-Face-Windows.If you opted to use the sample images, also delete the folder into which you cloned the Microsoft/Cognitive-Face-Windows repository.

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