자습서: 이미지 처리 앱 빌드 - C#Tutorial: Build an image processing app - C#

Computer Vision을 사용하는 기본 Windows 응용 프로그램을 탐색합니다. 이 프로그램은 OCR(광학 문자 인식)을 수행하고, 스마트하게 자른 썸네일을 만들고, 이미지에서 얼굴을 비롯한 시각적 특징을 감지하고, 분류하고, 태그를 지정하고, 설명합니다.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. .NET Framework의 일부인 WPF(Windows Presentation Foundation) 및 Computer Vision API를 사용하여 고유한 Windows용 앱을 빌드하기 위한 템플릿으로 이 오픈 소스 예제를 사용할 수 있습니다.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.

  • GitHub에서 샘플 앱 가져오기Get the sample app from GitHub
  • Visual Studio에서 샘플 앱 열기 및 빌드Open 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

Computer Vision 샘플 앱은 Microsoft/Cognitive-Vision-Windows 리포지토리의 GitHub에서 제공됩니다.The Computer Vision sample app is available on GitHub from the Microsoft/Cognitive-Vision-Windows repository. 또한 이 리포지토리에는 Git 하위 모듈로 Microsoft/Cognitive-Common-Windows 리포지토리가 포함됩니다.This repository also includes the Microsoft/Cognitive-Common-Windows repository as a Git submodule. 하위 모듈을 비롯한 이 리포지토리는 명령줄에서 git clone --recurse-submodules 명령을 사용하거나 GitHub 데스크톱을 사용하여 재귀적으로 복제할 수 있습니다.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.

예를 들어, 명령 프롬프트에서 Computer Vision 샘플 앱에 대한 리포지토리를 재귀적으로 복제하려면 다음 명령을 실행합니다.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. ZIP으로 리포지토리를 다운로드하는 경우 Git에 하위 모듈이 포함되지 않습니다.Git doesn't include submodules when downloading a repository as a ZIP.

선택적 샘플 이미지 가져오기Get optional sample images

필요에 따라 Microsoft/Cognitive-Face-Windows 리포지토리의 GitHub에서 제공되는 Face 샘플 앱에 포함된 샘플 이미지를 사용할 수 있습니다.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. Computer Vision 샘플 앱에 대해 설명된 메서드로도 이 리포지토리를 재귀적으로 복제할 수 있습니다.You can recursively clone this repository, as well, by the methods described for the Computer Vision sample app.

예를 들어, 명령 프롬프트에서 Face 샘플 앱에 대한 리포지토리를 재귀적으로 복제하려면 다음 명령을 실행합니다.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 Studio에서 샘플 앱 열기 및 빌드Open 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에서 Visual Studio 솔루션 파일 /Sample-WPF/VisionAPI-WPF-Samples.sln을 엽니다.Open the Visual Studio solution file, /Sample-WPF/VisionAPI-WPF-Samples.sln, in Visual Studio.
  2. Visual Studio 솔루션에 2개의 프로젝트가 있는지 확인합니다.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

샘플 앱을 실행하면 썸네일을 만들거나 이미지에 태그를 설정하는 등의 다양한 작업을 수행할 때 Computer Vision 클라이언트 라이브러리 및 사용자와 어떻게 상호 작용하는지 확인할 수 있습니다.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. 엔드포인트의 구독 키에 대한 Computer Vision 리소스에서 /vision/v1.0은 생략한 채로 엔드포인트 URL을 입력합니다.Enter the endpoint URL, omitting the /vision/v1.0, of the Computer Vision resource for your subscription key in Endpoint.
    예를 들어, Computer Vision 평가판의 구독 키를 사용하는 경우 미국 중서부 Azure 지역에 대한 다음 엔드포인트 URL을 입력합니다. 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.

    참고

    샘플 앱은 구독 키 및 엔드포인트 URL을 저장하는 데 격리된 저장소 및 System.IO.IsolatedStorage를 사용합니다.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. 사용할 언어를 사용자가 선택하거나 Computer Vision에서 자동으로 언어를 검색하도록 할 수 있습니다.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.

    중요

    Microsoft는 업로드되는 이미지를 수신하며, 해당 이미지를 사용하여 Computer Vision API 및 관련 서비스를 개선할 수 있습니다.Microsoft receives the images you upload and may use them to improve Computer Vision API and related services. 이미지를 제출하면 개발자 준수 사항을 따랐음을 확인하는 것입니다.By submitting an image, you confirm that you have followed our Developer Code of Conduct.

    다음 스크린샷은 샘플 이미지를 분석한 후 이미지 분석 시나리오에 제공된 페이지를 보여줍니다.The following screenshot illustrates the page provided for the Analyze Image scenario, after analyzing a sample image. 이미지 분석 시나리오 페이지Analyze Image scenario page

샘플 앱 탐색Explore the sample app

Computer Vision 샘플 앱에 대한 Visual Studio 솔루션에는 두 개의 프로젝트가 포함됩니다.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. Computer Vision 샘플 앱은 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
      샘플 앱에 대한 구독 키 및 엔드포인트 URL을 입력하기 위해 표준화된 레이아웃을 제공하는 페이지입니다.A Page that provides a standardized layout for entering a subscription key and endpoint URL for the sample app. Computer Vision 샘플 앱은 이 페이지를 사용하여 시나리오 페이지에서 사용되는 구독 키 및 엔드포인트 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. Computer Vision 샘플 앱은 이 컨트롤을 사용하지 않습니다.The Computer Vision sample app doesn't use this control.
  • VisionAPI-WPF-SamplesVisionAPI-WPF-Samples
    Computer Vision 샘플 앱에 대한 기본 프로젝트인 이 프로젝트에는 Computer Vision에 대한 모든 흥미로운 기능이 포함되어 있습니다.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.xamlMainWindow.xaml
      샘플 앱에 대한 주 창은 SubscriptionKeyPage 및 시나리오 페이지를 표시하기 위해 SampleScenarios 컨트롤을 사용합니다.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. 샘플 코드의 이러한 주요 부분에는 다양한 작업을 수행하기 위해 Computer Vision 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. Visual Studio에서 KEY SAMPLE CODE STARTS HERE를 검색하여 Computer Vision 샘플 앱에서 코드의 가장 관련성이 높은 섹션 사이를 이동할 수 있습니다.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.

예를 들어 다음을 표시하고 AnalyzePage.xaml에 포함된 UploadAndAnalyzeImageAsync 메서드는 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

이 예제 앱은 Azure Cognitive Services의 Computer Vision API용 씬 C# 클라이언트 래퍼인 Computer Vision API 클라이언트 라이브러리를 사용합니다.This sample app uses the Computer Vision API client library, a thin C# client wrapper for the Computer Vision API in Azure Cognitive Services. 클라이언트 라이브러리는 Microsoft.Azure.CognitiveServices.Vision.ComputerVision 패키지의 NuGet에서 제공됩니다.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. 또한 Microsoft/Cognitive-Vision-Windows 리포지토리의 /ClientLibrary 폴더에서 클라이언트 라이브러리에 대한 소스 코드를 볼 수 있습니다.You can also view the source code for the client library in the /ClientLibrary folder of the Microsoft/Cognitive-Vision-Windows repository.

클라이언트 라이브러리의 기능은 Microsoft.Azure.CognitiveServices.Vision.ComputerVision 네임스페이스의 ComputerVisionClient 클래스를 중심으로 하며, Computer Vision과 상호 작용할 때 ComputerVisionClient 클래스에서 사용되는 모델은 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
// -----------------------------------------------------------------------

Computer Vision 샘플 앱에 포함된 시나리오를 살펴보면서 ComputerVisionClient 클래스에 포함된 다양한 메서드에 대해 자세히 알아보세요.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으로 인코딩해야 하며 ComputerVisionClient.AnalyzeImageInStreamAsync 메서드를 호출하여 Computer Vision으로 전송하는 로컬 이미지에 사용됩니다.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을 ComputerVisionClient.AnalyzeImageAsync 메서드를 호출하여 Computer Vision으로 전송하는 원격 이미지에 사용됩니다.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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.The UploadAndAnalyzeImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. 샘플 앱은 로컬 이미지를 분석하기 때문에 Computer Vision으로 해당 이미지의 콘텐츠를 전송해야 합니다.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Stream으로 읽도록 imageFilePath에 지정된 로컬 파일을 연 다음, 시나리오 페이지에서 선택한 시각적 기능 및 언어를 가져옵니다.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. 파일에 대한 Stream, 시각적 기능 및 언어를 전달하는 ComputerVisionClient.AnalyzeImageInStreamAsync 메서드를 호출한 다음, 결과를 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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.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. 이미지 URL, 시각적 기능 및 언어를 전달하는 ComputerVisionClient.AnalyzeImageInStreamAsync 메서드를 호출한 다음, 결과를 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
    이 메서드는 Computer Vision에서 사용 가능한 도메인 모델의 목록을 가져오고, ComputerVisionClient.ListModelsAsync 메서드를 사용하여 페이지의 _domainModelComboBox ComboBox 컨트롤을 채웁니다.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으로 인코딩해야 하며 ComputerVisionClient.AnalyzeImageByDomainInStreamAsync 메서드를 호출하여 Computer Vision으로 전송하는 로컬 이미지에 사용됩니다.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을 ComputerVisionClient.AnalyzeImageByDomainAsync 메서드를 호출하여 Computer Vision으로 전송하는 원격 이미지에 사용됩니다.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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.The UploadAndAnalyzeInDomainImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. 샘플 앱은 로컬 이미지를 분석하기 때문에 Computer Vision으로 해당 이미지의 콘텐츠를 전송해야 합니다.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Stream으로 읽도록 imageFilePath에 지정된 로컬 파일을 연 다음, 시나리오 페이지에서 선택한 언어를 가져옵니다.It opens the local file specified in imageFilePath for reading as a Stream, then gets the language selected in the scenario page. 파일에 대한 Stream, 도메인 모델의 이름 및 언어를 전달하는 ComputerVisionClient.AnalyzeImageByDomainInStreamAsync 메서드를 호출한 다음, 결과를 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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.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. 이미지 URL, 시각적 기능 및 언어를 전달하는 ComputerVisionClient.AnalyzeImageByDomainAsync 메서드를 호출한 다음, 결과를 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으로 인코딩해야 하며 ComputerVisionClient.DescribeImageInStreamAsync 메서드를 호출하여 Computer Vision으로 전송하는 로컬 이미지에 사용됩니다.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을 ComputerVisionClient.DescribeImageAsync 메서드를 호출하여 Computer Vision으로 전송하는 원격 이미지에 사용됩니다.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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.The UploadAndDescribeImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. 샘플 앱은 로컬 이미지를 분석하기 때문에 Computer Vision으로 해당 이미지의 콘텐츠를 전송해야 합니다.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Stream으로 읽도록 imageFilePath에 지정된 로컬 파일을 연 다음, 시나리오 페이지에서 선택한 언어를 가져옵니다.It opens the local file specified in imageFilePath for reading as a Stream, then gets the language selected in the scenario page. 파일에 대한 Stream, 최대 후보 수(이 경우 3) 및 언어를 전달하는 ComputerVisionClient.DescribeImageInStreamAsync 메서드를 호출한 다음, 결과를 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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.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. 이미지 URL, 최대 후보 수(이 경우 3) 및 언어를 전달하는 ComputerVisionClient.DescribeImageAsync 메서드를 호출한 다음, 결과를 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으로 인코딩해야 하며 ComputerVisionClient.TagImageInStreamAsync 메서드를 호출하여 Computer Vision으로 전송하는 로컬 이미지에 사용됩니다.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을 ComputerVisionClient.TagImageAsync 메서드를 호출하여 Computer Vision으로 전송하는 원격 이미지에 사용됩니다.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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.The UploadAndGetTagsForImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. 샘플 앱은 로컬 이미지를 분석하기 때문에 Computer Vision으로 해당 이미지의 콘텐츠를 전송해야 합니다.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Stream으로 읽도록 imageFilePath에 지정된 로컬 파일을 연 다음, 시나리오 페이지에서 선택한 언어를 가져옵니다.It opens the local file specified in imageFilePath for reading as a Stream, then gets the language selected in the scenario page. 파일에 대한 Stream 및 언어를 전달하는 ComputerVisionClient.TagImageInStreamAsync 메서드를 호출한 다음, 결과를 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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.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. 이미지 URL 및 언어를 전달하는 ComputerVisionClient.TagImageAsync 메서드를 호출한 다음, 결과를 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으로 인코딩해야 하며 ComputerVisionClient.RecognizePrintedTextInStreamAsync 메서드를 호출하여 Computer Vision으로 전송하는 로컬 이미지에 사용됩니다.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을 ComputerVisionClient.RecognizePrintedTextAsync 메서드를 호출하여 Computer Vision으로 전송하는 원격 이미지에 사용됩니다.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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.The UploadAndRecognizeImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. 샘플 앱은 로컬 이미지를 분석하기 때문에 Computer Vision으로 해당 이미지의 콘텐츠를 전송해야 합니다.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Stream으로 읽도록 imageFilePath에 지정된 로컬 파일을 연 다음, 시나리오 페이지에서 선택한 언어를 가져옵니다.It opens the local file specified in imageFilePath for reading as a Stream, then gets the language selected in the scenario page. 해당 방향이 감지되지 않았음을 나타내며 파일에 대한 Stream 및 언어를 전달하는 ComputerVisionClient.RecognizePrintedTextInStreamAsync 메서드를 호출한 다음, 결과를 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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.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. 해당 방향이 감지되지 않았음을 나타내며 이미지 URL 및 언어를 전달하는 ComputerVisionClient.RecognizePrintedTextAsync 메서드를 호출한 다음, 결과를 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으로 인코딩해야 하며 RecognizeAsync 메서드를 호출하고 ComputerVisionClient.RecognizeTextInStreamAsync 메서드에 대해 매개 변수가 있는 대리자를 전달하여 Computer Vision으로 전송하는 로컬 이미지에 사용됩니다.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을 RecognizeAsync 메서드를 호출하고 ComputerVisionClient.RecognizeTextAsync 메서드에 대해 매개 변수가 있는 대리자를 전달하여 Computer Vision으로 전송하는 원격 이미지에 사용됩니다.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 이 메서드는 UploadAndRecognizeImageAsyncRecognizeUrlAsync 메서드 모두에 대한 비동기 호출을 처리하면서 동시에 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.

Computer Vision 샘플 앱에 포함된 다른 시나리오와 달리, 이 시나리오는 비동기로, 프로세스를 시작하기 위해 하나의 메서드가 호출되면 상태를 확인하고 해당 프로세스의 결과를 반환하는 데에는 다른 메서드가 호출됩니다.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 메서드는 Stream으로 읽도록 imageFilePath에 지정된 로컬 파일을 연 다음, RecognizeAsync 메서드를 호출하여 다음을 전달합니다.The UploadAndRecognizeImageAsync method opens the local file specified in imageFilePath for reading as a Stream, then calls the RecognizeAsync method, passing:

  • GetHeadersAsyncFunc에서 매개 변수로 파일 및 인식 모드에 대한 Stream을 사용하는 ComputerVisionClient.RecognizeTextInStreamAsync 메서드의 매개 변수가 있는 비동기 대리자에 대한 람다 식.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.
  • GetOperationUrlFunc에서 Operation-Location 응답 헤더를 가져오는 대리자에 대한 람다 식.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:

  • GetHeadersAsyncFunc에서 매개 변수로 원격 이미지의 URL 및 인식 모드를 사용하는 ComputerVisionClient.RecognizeTextAsync 메서드의 매개 변수가 있는 비동기 대리자에 대한 람다 식.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.
  • GetOperationUrlFunc에서 Operation-Location 응답 헤더를 가져오는 대리자에 대한 람다 식.A lambda expression for a delegate to get the Operation-Location response header value, in GetOperationUrlFunc.

RecognizeAsync 메서드가 완료되면 UploadAndRecognizeImageAsyncRecognizeUrlAsync 메서드 모두 결과를 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 메서드는 GetHeadersAsyncFunc에 전달된 ComputerVisionClient.RecognizeTextInStreamAsync 또는 ComputerVisionClient.RecognizeTextAsync 메서드 중 하나에 대한 매개 변수가 있는 대리자를 호출하고 응답을 기다립니다.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. 이 값은 Computer Vision에서 GetHeadersAsyncFunc에 전달된 메서드의 결과 검색하는 데 사용되는 URL입니다.This value is the URL used to retrieve the results of the method passed in GetHeadersAsyncFunc from Computer Vision.

그런 다음, RecognizeAsync 메서드는 ComputerVisionClient.GetTextOperationResultAsync 메서드를 호출하여 Operation-Location 응답 헤더에서 검색된 URL을 전달하며, 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를 3회 이상 호출하고 호출 간 3초 동안 대기합니다.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으로 인코딩해야 하며 ComputerVisionClient.GenerateThumbnailInStreamAsync 메서드를 호출하여 Computer Vision으로 전송하는 로컬 이미지에 사용됩니다.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을 ComputerVisionClient.GenerateThumbnailAsync 메서드를 호출하여 Computer Vision으로 전송하는 원격 이미지에 사용됩니다.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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.The UploadAndThumbnailImageAsync method creates a new ComputerVisionClient instance, using the specified subscription key and endpoint URL. 샘플 앱은 로컬 이미지를 분석하기 때문에 Computer Vision으로 해당 이미지의 콘텐츠를 전송해야 합니다.Because the sample app is analyzing a local image, it has to send the contents of that image to Computer Vision. Stream으로 읽도록 imageFilePath에 지정된 로컬 파일을 엽니다.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 메서드는 지정된 구독 키 및 엔드포인트 URL을 사용하여 새로운 ComputerVisionClient 인스턴스를 만듭니다.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