Gyors útmutató: A Javához készült ügyféloldali kódtár Computer VisionQuickstart: Computer Vision client library for Java

Ismerkedjen meg a Javához készült Computer Vision-ügyfél függvénytárával.Get started with the Computer Vision client library for Java. 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 Javához készült Computer Vision ügyféloldali kódtár a következőre használható:Use the Computer Vision client library for Java 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ós | anyagok(Maven) | mintáiReference documentation | Artifact (Maven) | 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:

Ezután hozzon létre környezeti változókat a kulcs-és szolgáltatás végponti COMPUTER_VISION_SUBSCRIPTION_KEY karakterláncához, a nevet és COMPUTER_VISION_ENDPOINTa-t.Then, create environment variables for the key and service endpoint string, named COMPUTER_VISION_SUBSCRIPTION_KEY and COMPUTER_VISION_ENDPOINT, respectively.

Új Gradle-projekt létrehozásaCreate a new Gradle project

Egy konzolablak (például a cmd, a PowerShell vagy a bash) ablakban hozzon létre egy új könyvtárat az alkalmazáshoz, és navigáljon hozzá.In a console window (such as cmd, PowerShell, or Bash), create a new directory for your app, and navigate to it.

mkdir myapp && cd myapp

Futtassa a gradle init parancsot a munkakönyvtárból.Run the gradle init command from your working directory. Ez a parancs alapvető Build-fájlokat hoz létre a Gradle számára, beleértve a Build. Gradle. KTSfájlt, amelyet futásidőben használ az alkalmazás létrehozásához és konfigurálásához.This command will create essential build files for Gradle, including build.gradle.kts, which is used at runtime to create and configure your application.

gradle init --type basic

Amikor a rendszer rákérdez a DSLkiválasztására, válassza a Kotlinlehetőséget.When prompted to choose a DSL, select Kotlin.

Keresse meg a Build. gradle. KTS , és nyissa meg a kívánt ide-vagy szövegszerkesztővel.Locate build.gradle.kts and open it with your preferred IDE or text editor. Ezután másolja a következő Build-konfigurációba.Then copy in the following build configuration. Ez a konfiguráció definiálja a projektet olyan Java-alkalmazásként, amelynek belépési pontja a ComputerVisionQuickstartsosztály.This configuration defines the project as a Java application whose entry point is the class ComputerVisionQuickstarts. Importálja a Computer Vision könyvtárat.It imports the Computer Vision library.

plugins {
    java
    application
}
application { 
    mainClassName = "ComputerVisionQuickstarts"
}
repositories {
    mavenCentral()
}

A munkakönyvtárból futtassa a következő parancsot egy projekt forrás mappájának létrehozásához:From your working directory, run the following command to create a project source folder:

mkdir -p src/main/java

Navigáljon az új mappára, és hozzon létre egy ComputerVisionQuickstarts. Javanevű fájlt.Navigate to the new folder and create a file called ComputerVisionQuickstarts.java. Nyissa meg a kívánt szerkesztőben vagy ide, és adja import hozzá a következő utasításokat:Open it in your preferred editor or IDE and add the following import statements:

import com.microsoft.azure.cognitiveservices.vision.computervision.*;
import com.microsoft.azure.cognitiveservices.vision.computervision.models.*;

import java.io.File;
import java.io.FileInputStream;
import java.nio.file.Files;

import java.util.ArrayList;
import java.util.List;

Ezután adja hozzá a ComputerVisionQuickstartsosztály definícióját.Then add a class definition for ComputerVisionQuickstarts.

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

Ez a rövid útmutató a Gradle függőség-kezelőt használja.This quickstart uses the Gradle dependency manager. Megtalálhatja az ügyféloldali függvénytárat és az egyéb függőségi kezelők információit a Maven központi adattárában.You can find the client library and information for other dependency managers on the Maven Central Repository.

A projekt Build. gradle. KTS fájljában adja meg a Computer Vision ügyféloldali függvénytárat függőségként.In your project's build.gradle.kts file, include the Computer Vision client library as a dependency.

dependencies {
    compile(group = "com.microsoft.azure.cognitiveservices", name = "azure-cognitiveservices-computervision", version = "1.0.2-beta")
}

ObjektummodellObject model

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

Name (Név)Name 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 adatok alapján hozza létre, és más osztályok példányainak előállítására használja.You instantiate it with your subscription information, and you use it to produce instances of other classes.
ComputerVisionComputerVision Ez az osztály az ügyfél objektumból származik, és közvetlenül kezeli az összes képműveletet, például a képek elemzését, a szöveg észlelését és a miniatűr létrehozását.This class comes from the client object and directly handles all of the image operations, such as image analysis, text detection, and thumbnail generation.
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 a Javához készült Computer Vision ügyféloldali kódtár használatával:These code snippets show you how to do the following tasks with the Computer Vision client library for Java:

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

Megjegyzés

Ez a rövid útmutató azt feltételezi, hogy létrehozott egy környezeti változót a ( COMPUTER_VISION_SUBSCRIPTION_KEYz) nevű Computer Vision kulcshoz.This quickstart assumes you've created an environment variable for your Computer Vision key, named COMPUTER_VISION_SUBSCRIPTION_KEY.

A következő kód hozzáad egy main metódust az osztályhoz, és változókat hoz létre az erőforrás Azure-végpontja és kulcsa számára.The following code adds a main method to your class and creates variables for your resource's Azure endpoint and key. Meg kell adnia a saját végponti karakterláncot, amelyet a Azure Portal Áttekintés szakaszának ellenőrzésével talál.You'll need to enter your own endpoint string, which you can find by checking the Overview section of the Azure portal.

public static void main(String[] args) {
    // Add your Computer Vision subscription key and endpoint to your environment
    // variables.
    // After setting, close and then re-open your command shell or project for the
    // changes to take effect.
    String subscriptionKey = System.getenv("COMPUTER_VISION_SUBSCRIPTION_KEY");
    String endpoint = System.getenv("COMPUTER_VISION_ENDPOINT");

Ezután adja hozzá a következő kódot egy ComputerVisionClient objektum létrehozásához, és továbbítsa azt más metódus (ok) ra, amelyet később meg fog határozni.Next, add the following code to create a ComputerVisionClient object and passes it into other method(s), which you'll define later.

ComputerVisionClient compVisClient = ComputerVisionManager.authenticate(subscriptionKey).withEndpoint(endpoint);
// END - Create an authenticated Computer Vision client.

System.out.println("\nAzure Cognitive Services Computer Vision - Java Quickstart Sample");

// Analyze local and remote images
AnalyzeLocalImage(compVisClient);

// Recognize printed text with OCR for a local and remote (URL) image
RecognizeTextOCRLocal(compVisClient);

Megjegyzés

Ha a környezeti változót az alkalmazás elindítása után hozta létre, akkor a változó eléréséhez be kell állítania és újra meg kell nyitnia a szerkesztőt, az IDE-t vagy a shellt.If you created the environment variable after you launched the application, you'll need to close and reopen the editor, IDE, or shell running it to access the variable.

Rendszerkép elemzéseAnalyze an image

A következő kód egy metódust határoz AnalyzeLocalImagemeg, amely az ügyfél-objektumot használja egy helyi rendszerkép elemzéséhez és az eredmények kinyomtatásához.The following code defines a method, AnalyzeLocalImage, which uses the client object to analyze a local 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.

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

Először hozzon létre egy erőforrást/ mappát a projekt src/Main/ mappájába, és adjon hozzá egy elemezni kívánt rendszerképet.First, create a resources/ folder in the src/main/ folder of your project, and add an image you'd like to analyze. Ezután adja hozzá a következő metódus-definíciót a ComputerVisionQuickstarts osztályhoz.Then add the following method definition to your ComputerVisionQuickstarts class. Ha szükséges, módosítsa a értékét a pathToLocalImage képfájlnak megfelelő értékre.If necessary, change the value of the pathToLocalImage to match your image file.

public static void AnalyzeLocalImage(ComputerVisionClient compVisClient) {
    /*
     * Analyze a local image:
     *
     * Set a string variable equal to the path of a local image. The image path
     * below is a relative path.
     */
    String pathToLocalImage = "src\\main\\resources\\myImage.jpg";

Megjegyzés

A távoli rendszerképeket az URL-cím használatával is elemezheti.You can also analyze a remote image using its URL. A távoli rendszerképeket érintő forgatókönyvek a githubon találhatók.See the sample code on GitHub for scenarios involving remote images.

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

Ezután adja meg, hogy mely vizuális funkciókat szeretné kibontani az elemzésbe.Next, specify which 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.

// This list defines the features to be extracted from the image.
List<VisualFeatureTypes> featuresToExtractFromLocalImage = new ArrayList<>();
featuresToExtractFromLocalImage.add(VisualFeatureTypes.DESCRIPTION);
featuresToExtractFromLocalImage.add(VisualFeatureTypes.CATEGORIES);
featuresToExtractFromLocalImage.add(VisualFeatureTypes.TAGS);
featuresToExtractFromLocalImage.add(VisualFeatureTypes.FACES);
featuresToExtractFromLocalImage.add(VisualFeatureTypes.ADULT);
featuresToExtractFromLocalImage.add(VisualFeatureTypes.COLOR);
featuresToExtractFromLocalImage.add(VisualFeatureTypes.IMAGE_TYPE);

ElemzésAnalyze

Ez a metódus részletes eredményeket jelenít meg a konzolon a képelemzés egyes hatókörei esetében.This method prints detailed results to the console for each scope of image analysis. Javasoljuk, hogy ezt a metódust a try/catch blokkban hívja meg.We recommend you surround this method call in a Try/Catch block. A analyzeImageInStream metódus egy ImageAnalysis objektumot ad vissza, amely az összes kinyert információt tartalmazza.The analyzeImageInStream method returns an ImageAnalysis object that contains all of extracted information.

// Need a byte array for analyzing a local image.
File rawImage = new File(pathToLocalImage);
byte[] imageByteArray = Files.readAllBytes(rawImage.toPath());

// Call the Computer Vision service and tell it to analyze the loaded image.
ImageAnalysis analysis = compVisClient.computerVision().analyzeImageInStream().withImage(imageByteArray)
        .withVisualFeatures(featuresToExtractFromLocalImage).execute();

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.

// Display image captions and confidence values.
System.out.println("\nCaptions: ");
for (ImageCaption caption : analysis.description().captions()) {
    System.out.printf("\'%s\' with confidence %f\n", caption.text(), caption.confidence());
}

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 image category names and confidence values.
System.out.println("\nCategories: ");
for (Category category : analysis.categories()) {
    System.out.printf("\'%s\' with confidence %f\n", category.name(), category.score());
}

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.

// Display image tags and confidence values.
System.out.println("\nTags: ");
for (ImageTag tag : analysis.tags()) {
    System.out.printf("\'%s\' with confidence %f\n", tag.name(), tag.confidence());
}

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.

// Display any faces found in the image and their location.
System.out.println("\nFaces: ");
for (FaceDescription face : analysis.faces()) {
    System.out.printf("\'%s\' of age %d at location (%d, %d), (%d, %d)\n", face.gender(), face.age(),
            face.faceRectangle().left(), face.faceRectangle().top(),
            face.faceRectangle().left() + face.faceRectangle().width(),
            face.faceRectangle().top() + face.faceRectangle().height());
}

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.

// Display whether any adult or racy content was detected and the confidence
// values.
System.out.println("\nAdult: ");
System.out.printf("Is adult content: %b with confidence %f\n", analysis.adult().isAdultContent(),
        analysis.adult().adultScore());
System.out.printf("Has racy content: %b with confidence %f\n", analysis.adult().isRacyContent(),
        analysis.adult().racyScore());

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.

// Display the image color scheme.
System.out.println("\nColor scheme: ");
System.out.println("Is black and white: " + analysis.color().isBWImg());
System.out.println("Accent color: " + analysis.color().accentColor());
System.out.println("Dominant background color: " + analysis.color().dominantColorBackground());
System.out.println("Dominant foreground color: " + analysis.color().dominantColorForeground());
System.out.println("Dominant colors: " + String.join(", ", analysis.color().dominantColors()));

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

A Computer Vision speciális modellt használhat a képek további elemzéséhez.Computer Vision can use specialized model 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.

// Display any celebrities detected in the image and their locations.
System.out.println("\nCelebrities: ");
for (Category category : analysis.categories()) {
    if (category.detail() != null && category.detail().celebrities() != null) {
        for (CelebritiesModel celeb : category.detail().celebrities()) {
            System.out.printf("\'%s\' with confidence %f at location (%d, %d), (%d, %d)\n", celeb.name(),
                    celeb.confidence(), celeb.faceRectangle().left(), celeb.faceRectangle().top(),
                    celeb.faceRectangle().left() + celeb.faceRectangle().width(),
                    celeb.faceRectangle().top() + celeb.faceRectangle().height());
        }
    }
}

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.

// Display any landmarks detected in the image and their locations.
System.out.println("\nLandmarks: ");
for (Category category : analysis.categories()) {
    if (category.detail() != null && category.detail().landmarks() != null) {
        for (LandmarksModel landmark : category.detail().landmarks()) {
            System.out.printf("\'%s\' with confidence %f\n", landmark.name(), landmark.confidence());
        }
    }
}

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 rajzolásról.The following code prints information about the type of image—whether it is clip art or line drawing.

// Display what type of clip art or line drawing the image is.
System.out.println("\nImage type:");
System.out.println("Clip art type: " + analysis.imageType().clipArtType());
System.out.println("Line drawing type: " + analysis.imageType().lineDrawingType());

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.

Megjegyzés

Az URL-cím használatával egy távoli rendszerképben is olvashat szöveget.You can also read text in a remote image using its URL. A távoli rendszerképeket érintő forgatókönyvek a githubon találhatók.See the sample code on GitHub for scenarios involving remote images.

Az felismerő API meghívásaCall the Recognize API

Először használja a következő kódot a recognizePrintedTextInStream metódus meghívásához az adott képhez.First, use the following code to call the recognizePrintedTextInStream method for the given image. Ha hozzáadja ezt a kódot a projekthez, a értéket localTextImagePath a helyi rendszerkép elérési útjára kell cserélnie.When you add this code to your project, you need to replace the value of localTextImagePath with the path to your local image.

// Display what type of clip art or line drawing the image is.
System.out.println("\nImage type:");
System.out.println("Clip art type: " + analysis.imageType().clipArtType());
System.out.println("Line drawing type: " + analysis.imageType().lineDrawingType());

A következő kódrészlet dolgozza fel a visszaadott szöveget, és elemzi, hogy kinyomtassa az első szót az egyes sorokban.The following block of code processes the returned text and parses it to print out the first word in each line. A kód segítségével gyorsan megismerheti egy OcrResult -példány struktúráját.You can use this code to quickly understand the structure of an OcrResult instance.

// Print results of local image
System.out.println();
System.out.println("Recognizing printed text from a local image with OCR ...");
System.out.println("\nLanguage: " + ocrResultLocal.language());
System.out.printf("Text angle: %1.3f\n", ocrResultLocal.textAngle());
System.out.println("Orientation: " + ocrResultLocal.orientation());

boolean firstWord = true;
// Gets entire region of text block
for (OcrRegion reg : ocrResultLocal.regions()) {
    // Get one line in the text block
    for (OcrLine line : reg.lines()) {
        for (OcrWord word : line.words()) {
            // get bounding box of first word recognized (just to demo)
            if (firstWord) {
                System.out.println("\nFirst word in first line is \"" + word.text()
                        + "\" with  bounding box: " + word.boundingBox());
                firstWord = false;
                System.out.println();
            }
            System.out.print(word.text() + " ");
        }
        System.out.println();
    }
}

Végül zárjuk le a try/catch blokkot és a metódus definícióját.Finally, close out the try/catch block and the method definition.

    } catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
}

Az alkalmazás futtatásaRun the application

Az alkalmazást az alábbiakkal hozhatja létre:You can build the app with:

gradle build

Futtassa az alkalmazást gradle run a paranccsal:Run the application with the gradle run command:

gradle 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.

További lépésekNext steps

Ebben a rövid útmutatóban megtanulta, hogyan használhatja a Computer Vision Java-függvénytárat a feladatok elvégzésére.In this quickstart, you learned how to use the Computer Vision Java library to do basis tasks. Ezután tekintse át a dokumentációt, és ismerkedjen meg a könyvtárral.Next, explore the reference documentation to learn more about the library.