Rövid útmutató: a .NET-hez készült ügyféloldali kódtár Computer VisionQuickstart: Computer Vision client library for .NET

Ismerkedjen meg a .NET-hez készült Computer Vision ügyféloldali kódtáraval.Get started with the Computer Vision client library for .NET. Az alábbi lépéseket követve telepítheti a csomagot, és kipróbálhatja az alapszintű feladatokhoz tartozó példa kódját.Follow these steps to install the package and try out the example code for basic tasks. A Computer Vision a képek feldolgozásához és a visszaadott adatokhoz való hozzáférést biztosít a speciális algoritmusokhoz.Computer Vision provides you with access to advanced algorithms for processing images and returning information.

A .NET-hez készült Computer Vision ügyféloldali kódtára a következőre használható:Use the Computer Vision client library for .NET to:

  • Elemezheti a címkéket, a szöveges leírást, az arcokat, a felnőtt tartalmakat és egyebeket.Analyze an image for tags, text description, faces, adult content, and more.
  • A nyomtatott és a kézírásos szöveg felismerése a Batch olvasási API-val.Recognize printed and handwritten text with the Batch Read API.

Dokumentáció | könyvtár forráskódja | csomag (NuGet) | mintákReference documentation | Library source code | Package (NuGet) | Samples

ElőfeltételekPrerequisites

BeállításSetting up

Computer Vision Azure-erőforrás létrehozásaCreate a Computer Vision Azure resource

Az Azure Cognitive Services a-ra előfizetett Azure-erőforrások képviselik.Azure Cognitive Services are represented by Azure resources that you subscribe to. Hozzon létre egy erőforrást Computer Vision a helyi gépen található Azure Portal vagy az Azure CLI használatával.Create a resource for Computer Vision using the Azure portal or Azure CLI on your local machine. További lehetőségek:You can also:

A próbaverziós előfizetésből vagy erőforrásból származó kulcs lekérése után hozzon létre környezeti változókat a kulcs és végpont URL-címéhez, COMPUTER_VISION_SUBSCRIPTION_KEY és COMPUTER_VISION_ENDPOINTnévvel.After you get a key from your trial subscription or resource, create environment variables for the key and endpoint URL, named COMPUTER_VISION_SUBSCRIPTION_KEY and COMPUTER_VISION_ENDPOINT, respectively.

Új C# alkalmazás létrehozásaCreate a new C# application

Hozzon létre egy új .NET Core-alkalmazást az előnyben részesített szerkesztőben vagy az IDE-ben.Create a new .NET Core application in your preferred editor or IDE.

Egy konzolablak (például cmd, PowerShell vagy bash) használatával hozzon létre egy új, computer-vision-quickstartnevű Console-alkalmazást a dotnet new paranccsal.In a console window (such as cmd, PowerShell, or Bash), use the dotnet new command to create a new console app with the name computer-vision-quickstart. Ez a parancs egy egyszerű ""Helló világ!"alkalmazás" C# projektet hoz létre egyetlen forrásfájlban: program.cs.This command creates a simple "Hello World" C# project with a single source file: Program.cs.

dotnet new console -n computer-vision-quickstart

Módosítsa a könyvtárat az újonnan létrehozott alkalmazás mappájába.Change your directory to the newly created app folder. Az alkalmazást az alábbiakkal hozhatja létre:You can build the application with:

dotnet build

A Build kimenete nem tartalmazhat figyelmeztetést vagy hibát.The build output should contain no warnings or errors.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

A projekt könyvtárában nyissa meg a program.cs fájlt az előnyben részesített szerkesztőben vagy az ide-ben.From the project directory, open the Program.cs file in your preferred editor or IDE. Adja hozzá a következő using irányelveket:Add the following using directives:

using System;
using System.Collections.Generic;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Collections;

Az alkalmazás program osztályában hozzon létre változókat az erőforrás Azure-végpontja és kulcsa számára.In the application's Program class, create variables for your resource's Azure endpoint and key.

// Add your Computer Vision subscription key and endpoint to your environment variables. 
// Close/reopen your project for them to take effect.
static string subscriptionKey = Environment.GetEnvironmentVariable("COMPUTER_VISION_SUBSCRIPTION_KEY");
static string endpoint = Environment.GetEnvironmentVariable("COMPUTER_VISION_ENDPOINT");

Az ügyféloldali kódtár telepítéseInstall the client library

Az alkalmazás könyvtárában telepítse az Computer Vision .NET-hez készült ügyféloldali kódtárat a következő paranccsal:Within the application directory, install the Computer Vision client library for .NET with the following command:

dotnet add package Microsoft.Azure.CognitiveServices.Vision.ComputerVision --version 5.0.0

Ha a Visual Studio IDE-t használja, az ügyféloldali kódtár letölthető NuGet-csomagként érhető el.If you're using the Visual Studio IDE, the client library is available as a downloadable NuGet package.

ObjektummodellObject model

A következő osztályok és felületek a Computer Vision .NET SDK főbb funkcióit kezelik.The following classes and interfaces handle some of the major features of the Computer Vision .NET SDK.

NévName LeírásDescription
ComputerVisionClientComputerVisionClient Ez az osztály minden Computer Vision funkcióhoz szükséges.This class is needed for all Computer Vision functionality. Ezt az előfizetési adatokkal hozza létre, és a legtöbb képművelet végrehajtásához használja.You instantiate it with your subscription information, and you use it to do most image operations.
ComputerVisionClientExtensionsComputerVisionClientExtensions Ez az osztály további metódusokat tartalmaz a ComputerVisionClient.This class contains additional methods for the ComputerVisionClient.
VisualFeatureTypesVisualFeatureTypes Ez az enumerálás a képelemzés különböző típusait határozza meg, amelyeket szabványos elemzési műveletekben lehet elvégezni.This enum defines the different types of image analysis that can be done in a standard Analyze operation. Az igényeinek megfelelően adja meg a VisualFeatureTypes-értékek készletét.You specify a set of VisualFeatureTypes values depending on your needs.

Példák a kódokraCode examples

Ezek a kódrészletek azt mutatják be, hogyan végezheti el a következő feladatokat az Computer Vision .NET-hez készült ügyféloldali kódtára használatával:These code snippets show you how to do the following tasks with the Computer Vision client library for .NET:

Az ügyfél hitelesítéseAuthenticate the client

Megjegyzés

Ez a rövid útmutató feltételezi, hogy létrehozott egy környezeti változót a Computer Vision kulcshoz és végponthoz, COMPUTER_VISION_SUBSCRIPTION_KEY és COMPUTER_VISION_ENDPOINT.This quickstart assumes you've created environment variables for your Computer Vision key and endpoint, named COMPUTER_VISION_SUBSCRIPTION_KEY and COMPUTER_VISION_ENDPOINT respectively.

Egy új metódusban hozza létre az ügyfelet a végponttal és a kulccsal.In a new method, instantiate a client with your endpoint and key. Hozzon létre egy CognitiveServicesCredentials objektumot a kulccsal, és használja a végpontján egy ComputerVisionClient objektum létrehozásához.Create a CognitiveServicesCredentials object with your key, and use it with your endpoint to create an ComputerVisionClient object.

/*
* AUTHENTICATE
* Creates a Computer Vision client used by each example.
*/
public static ComputerVisionClient Authenticate(string endpoint, string key)
{
    ComputerVisionClient client =
        new ComputerVisionClient(new ApiKeyServiceClientCredentials(key))
        { Endpoint = endpoint };
    return client;
}

Valószínűleg ezt a metódust szeretné hívni a Main metódusban.You'll likely want to call this method in the Main method.

// Create a client
ComputerVisionClient client = Authenticate(endpoint, subscriptionKey);

Kép elemzéseAnalyze an image

A következő kód egy metódust határoz meg, AnalyzeImageUrl, amely az ügyfél-objektumot használja egy távoli rendszerkép elemzéséhez és az eredmények kinyomtatásához.The following code defines a method, AnalyzeImageUrl, which uses the client object to analyze a remote image and print the results. A metódus a szöveges leírást, a kategorizálást, a címkék listáját, az észlelt arcokat, a felnőtt tartalom jelzőit, a fő színeket és a képtípust adja vissza.The method returns a text description, categorization, list of tags, detected faces, adult content flags, main colors, and image type.

Adja hozzá a metódus hívását a Main metódushoz.Add the method call in your Main method.

// Analyze an image to get features and other properties.
AnalyzeImageUrl(client, ANALYZE_URL_IMAGE).Wait();

Tesztelési rendszerkép beállításaSet up test image

A program osztályban mentse az elemezni kívánt rendszerkép URL-címére mutató hivatkozást.In your Program class, save a reference to the URL of the image you want to analyze.

// URL image used for analyzing an image (image of puppy)
private const string ANALYZE_URL_IMAGE = "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png";

Megjegyzés

Elemezheti a helyi rendszerképet is.You can also analyze a local image. A helyi rendszerképeket érintő forgatókönyvek a githubon találhatók.See the sample code on GitHub for scenarios involving local images.

Vizuális funkciók meghatározásaSpecify visual features

Adja meg az új módszert a képelemzéshez.Define your new method for image analysis. Adja hozzá az alábbi kódot, amely meghatározza, hogy mely vizuális funkciókat szeretné kibontani az elemzésbe.Add the code below, which specifies visual features you'd like to extract in your analysis. A teljes listát a VisualFeatureTypes enumerálásban tekintheti meg.See the VisualFeatureTypes enum for a complete list.

/* 
* ANALYZE IMAGE - URL IMAGE
* Analyze URL image. Extracts captions, categories, tags, objects, faces, racy/adult content,
* brands, celebrities, landmarks, color scheme, and image types.
*/
public static async Task AnalyzeImageUrl(ComputerVisionClient client, string imageUrl)
{
    Console.WriteLine("----------------------------------------------------------");
    Console.WriteLine("ANALYZE IMAGE - URL");
    Console.WriteLine();

    // Creating a list that defines the features to be extracted from the image. 
    List<VisualFeatureTypes> features = new List<VisualFeatureTypes>()
        {
            VisualFeatureTypes.Categories, VisualFeatureTypes.Description,
            VisualFeatureTypes.Faces, VisualFeatureTypes.ImageType,
            VisualFeatureTypes.Tags, VisualFeatureTypes.Adult,
            VisualFeatureTypes.Color, VisualFeatureTypes.Brands,
            VisualFeatureTypes.Objects
        };

ElemzésAnalyze

A AnalyzeImageAsync metódus egy ImageAnalysis objektumot ad vissza, amely az összes kinyert információt tartalmazza.The AnalyzeImageAsync method returns an ImageAnalysis object that contains all of extracted information.

Console.WriteLine($"Analyzing the image {Path.GetFileName(imageUrl)}...");
Console.WriteLine();
// Analyze the URL image 
ImageAnalysis results = await client.AnalyzeImageAsync(imageUrl, features);

Az alábbi részek azt mutatják be, hogyan elemezheti ezeket az információkat részletesen.The following sections show how to parse this information in detail.

Rendszerkép lekérése – LeírásGet image description

A következő kód beolvassa a rendszerképhez létrehozott feliratok listáját.The following code gets the list of generated captions for the image. További részletekért tekintse meg a képek leírása című témakört.See Describe images for more details.

// Sunmarizes the image content.
Console.WriteLine("Summary:");
foreach (var caption in results.Description.Captions)
{
    Console.WriteLine($"{caption.Text} with confidence {caption.Confidence}");
}
Console.WriteLine();

Rendszerkép beolvasása kategóriaGet image category

A következő kód lekéri a rendszerkép észlelt kategóriáját.The following code gets the detected category of the image. További részletekért tekintse meg a képek kategorizálása című témakört.See Categorize images for more details.

// Display categories the image is divided into.
Console.WriteLine("Categories:");
foreach (var category in results.Categories)
{
    Console.WriteLine($"{category.Name} with confidence {category.Score}");
}
Console.WriteLine();

Képcímkék beolvasásaGet image tags

A következő kód beolvassa az észlelt címkék készletét a képen.The following code gets the set of detected tags in the image. További részletekért tekintse meg a tartalom címkéit .See Content tags for more details.

// Image tags and their confidence score
Console.WriteLine("Tags:");
foreach (var tag in results.Tags)
{
    Console.WriteLine($"{tag.Name} {tag.Confidence}");
}
Console.WriteLine();

Objektumok észleléseDetect objects

A következő kód észleli a rendszerképben szereplő általános objektumokat, és kiírja azokat a konzolra.The following code detects common objects in the image and prints them to the console. További részletekért lásd az objektum észlelése című témakört.See Object detection for more details.

// Objects
Console.WriteLine("Objects:");
foreach (var obj in results.Objects)
{
    Console.WriteLine($"{obj.ObjectProperty} with confidence {obj.Confidence} at location {obj.Rectangle.X}, " +
        $"{obj.Rectangle.X + obj.Rectangle.W}, {obj.Rectangle.Y}, {obj.Rectangle.Y + obj.Rectangle.H}");
}
Console.WriteLine();

Márkák észleléseDetect brands

A következő kód észleli a vállalati márkákat és emblémákat a rendszerképben, és kinyomtatja őket a konzolra.The following code detects corporate brands and logos in the image and prints them to the console. További részletekért lásd a márka észlelését ismertető témakört.See Brand detection for more details.

// Well-known (or custom, if set) brands.
Console.WriteLine("Brands:");
foreach (var brand in results.Brands)
{
    Console.WriteLine($"Logo of {brand.Name} with confidence {brand.Confidence} at location {brand.Rectangle.X}, " +
        $"{brand.Rectangle.X + brand.Rectangle.W}, {brand.Rectangle.Y}, {brand.Rectangle.Y + brand.Rectangle.H}" );
}
Console.WriteLine();

ArcfelismerésDetect faces

A következő kód az észlelt arcokat adja vissza a képen a téglalap koordinátáival, majd a Face attribútumok elemet.The following code returns the detected faces in the image with their rectangle coordinates and select face attributes. További részletekért tekintse meg az Arcfelismerés című témakört.See Face detection for more details.

// Faces
Console.WriteLine("Faces:");
foreach (var face in results.Faces)
{
    Console.WriteLine($"A {face.Gender} of age {face.Age} at location {face.FaceRectangle.Left}, " + 
        $"{face.FaceRectangle.Left}, {face.FaceRectangle.Top + face.FaceRectangle.Width}, " +
        $"{face.FaceRectangle.Top + face.FaceRectangle.Height}");
}
Console.WriteLine();

Felnőtt, zamatos vagy véres tartalom észleléseDetect adult, racy, or gory content

A következő kód kinyomtatja a felnőtt tartalom észlelt jelenlétét a képen.The following code prints the detected presence of adult content in the image. További részletekért tekintse meg a felnőtt, a zamatos és a véres tartalmat .See Adult, racy, gory content for more details.

// Adult or racy content, if any.
Console.WriteLine("Adult:");
Console.WriteLine($"Has adult content: {results.Adult.IsAdultContent} with confidence {results.Adult.AdultScore}");
Console.WriteLine($"Has racy content: {results.Adult.IsRacyContent} with confidence {results.Adult.RacyScore}");
Console.WriteLine();

Rendszerképek színsémájának beolvasásaGet image color scheme

A következő kód az észlelt színattribútumokat nyomtatja ki a képen, például a domináns színeket és a kiejtés színét.The following code prints the detected color attributes in the image, like the dominant colors and accent color. További részletekért lásd: Színsémák .See Color schemes for more details.

// Identifies the color scheme.
Console.WriteLine("Color Scheme:");
Console.WriteLine("Is black and white?: " + results.Color.IsBWImg);
Console.WriteLine("Accent color: " + results.Color.AccentColor);
Console.WriteLine("Dominant background color: " + results.Color.DominantColorBackground);
Console.WriteLine("Dominant foreground color: " + results.Color.DominantColorForeground);
Console.WriteLine("Dominant colors: " + string.Join(",", results.Color.DominantColors));
Console.WriteLine();

Tartományhoz tartozó tartalom beolvasásaGet domain-specific content

A Computer Vision speciális modelleket használhat a képek további elemzéséhez.Computer Vision can use specialized models to do further analysis on images. További részletekért tekintse meg a tartományra vonatkozó tartalmat .See Domain-specific content for more details.

A következő kód az észlelt hírességek adatait elemzi a képen.The following code parses data about detected celebrities in the image.

// Celebrities in image, if any.
Console.WriteLine("Celebrities:");
foreach (var category in results.Categories)
{
    if (category.Detail?.Celebrities != null)
    {
        foreach (var celeb in category.Detail.Celebrities)
        {
            Console.WriteLine($"{celeb.Name} with confidence {celeb.Confidence} at location {celeb.FaceRectangle.Left}, " +
                $"{celeb.FaceRectangle.Top}, {celeb.FaceRectangle.Height}, {celeb.FaceRectangle.Width}");
        }
    }
}
Console.WriteLine();

A következő kód az észlelt tereptárgyak adatait elemzi a képen.The following code parses data about detected landmarks in the image.

// Popular landmarks in image, if any.
Console.WriteLine("Landmarks:");
foreach (var category in results.Categories)
{
    if (category.Detail?.Landmarks != null)
    {
        foreach (var landmark in category.Detail.Landmarks)
        {
            Console.WriteLine($"{landmark.Name} with confidence {landmark.Confidence}");
        }
    }
}
Console.WriteLine();

A rendszerkép típusának beolvasásaGet the image type

A következő kód a képtípussal kapcsolatos információkat jeleníti meg—legyen szó ClipArt vagy vonalas rajzról.The following code prints information about the type of image—whether it is clip art or a line drawing.

// Detects the image types.
Console.WriteLine("Image Type:");
Console.WriteLine("Clip Art Type: " + results.ImageType.ClipArtType);
Console.WriteLine("Line Drawing Type: " + results.ImageType.LineDrawingType);
Console.WriteLine();

Nyomtatott és kézzel írt szöveg olvasásaRead printed and handwritten text

A Computer Vision a képen látható szöveget olvashatja, és átalakíthatja a karakteres adatfolyamba.Computer Vision can read visible text in an image and convert it to a character stream. Az ebben a szakaszban szereplő kód egy olyan metódust határoz meg, ExtractTextUrl, amely az ügyfél objektumával azonosítja és Kinyeri a nyomtatott vagy kézírásos szöveget a képen.The code in this section defines a method, ExtractTextUrl, which uses the client object to detect and extract printed or handwritten text in the image.

Adja hozzá a metódus hívását a Main metódushoz.Add the method call in your Main method.

// Extract text from an image (handwriting and/or printed).
ExtractTextUrl(client, EXTRACT_TEXT_URL_IMAGE).Wait();
ExtractTextLocal(client, EXTRACT_TEXT_LOCAL_IMAGE).Wait();

Tesztelési rendszerkép beállításaSet up test image

A program osztályban mentse a hivatkozást annak a képnek az URL-címére, amelyből szöveget szeretne kinyerni.In your Program class, save a reference the URL of the image you want to extract text from.

private const string EXTRACT_TEXT_URL_IMAGE = "https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg";
// URL image for OCR (optical character recognition). (Image of motivational meme).

Megjegyzés

Helyi rendszerképből is kinyerheti a szöveget.You can also extract text from a local image. A helyi rendszerképeket érintő forgatókönyvek a githubon találhatók.See the sample code on GitHub for scenarios involving local images.

Az olvasási API meghívásaCall the Read API

Adja meg az új metódust a szöveg olvasásához.Define the new method for reading text. Adja hozzá az alábbi kódot, amely meghívja a BatchReadFileAsync metódust az adott képhez.Add the code below, which calls the BatchReadFileAsync method for the given image. Ez egy műveleti azonosítót ad vissza, és elindít egy aszinkron folyamatot a rendszerkép tartalmának olvasásához.This returns an operation ID and starts an asynchronous process to read the content of the image.

/*
 *	EXTRACT TEXT - URL IMAGE
 */
public static async Task ExtractTextUrl(ComputerVisionClient client, string urlImage)
{
    Console.WriteLine("----------------------------------------------------------");
    Console.WriteLine("EXTRACT TEXT - URL IMAGE");
    Console.WriteLine();

    // Read text from URL
    BatchReadFileHeaders textHeaders = await client.BatchReadFileAsync(urlImage);
    // After the request, get the operation location (operation ID)
    string operationLocation = textHeaders.OperationLocation;

Olvasási eredmények beolvasásaGet Read results

Ezután kérje le a BatchReadFileAsync -hívás által visszaadott művelet azonosítóját, és használja a szolgáltatás lekérdezésére a művelet eredményeihez.Next, get the operation ID returned from the BatchReadFileAsync call, and use it to query the service for operation results. A következő kód ellenőrzi a műveletet egy másodperces időközönként, amíg az eredmények vissza nem állnak.The following code checks the operation at one-second intervals until the results are returned. Ezután kinyomtatja a kinyert szöveges adatát a konzolon.It then prints the extracted text data to the console.

// Retrieve the URI where the recognized text will be stored from the Operation-Location header. 
// We only need the ID and not the full URL
const int numberOfCharsInOperationId = 36;
string operationId = operationLocation.Substring(operationLocation.Length - numberOfCharsInOperationId);

// Extract the text 
// Delay is between iterations and tries a maximum of 10 times.
int i = 0;
int maxRetries = 10;
ReadOperationResult results;
Console.WriteLine($"Extracting text from URL image {Path.GetFileName(urlImage)}...");
Console.WriteLine();
do
{
    results = await client.GetReadOperationResultAsync(operationId);
    Console.WriteLine("Server status: {0}, waiting {1} seconds...", results.Status, i);
    await Task.Delay(1000);
}
while ((results.Status == TextOperationStatusCodes.Running ||
        results.Status == TextOperationStatusCodes.NotStarted) && i++ < maxRetries);

Olvasási eredmények megjelenítéseDisplay Read results

Adja hozzá a következő kódot a beolvasott szöveges információk elemzéséhez és megjelenítéséhez, majd fejezze be a metódus definícióját.Add the following code to parse and display the retrieved text data, and finish the method definition.

    // Display the found text.
    Console.WriteLine();
    var recognitionResults = results.RecognitionResults;
    foreach (TextRecognitionResult result in recognitionResults)
    {
        foreach (Line line in result.Lines)
        {
            Console.WriteLine(line.Text);
        }
    }
    Console.WriteLine();
}

Az alkalmazás futtatásaRun the application

Futtassa az alkalmazást az alkalmazás könyvtárából az dotnet run paranccsal.Run the application from your application directory with the dotnet run command.

dotnet run

Az erőforrások eltávolításaClean up resources

Ha Cognitive Services-előfizetést szeretne törölni, törölheti az erőforrást vagy az erőforráscsoportot.If you want to clean up and remove a Cognitive Services subscription, you can delete the resource or resource group. Az erőforráscsoport törlésével a hozzá társított egyéb erőforrások is törlődnek.Deleting the resource group also deletes any other resources associated with it.

Következő lépésekNext steps