Inicio rápido: Análisis de imágenes remotas mediante la Java y la API REST Computer VisionQuickstart: Analyze a remote image using the Computer Vision REST API and Java

En este inicio rápido, va a analizar una imagen remota almacenada para extraer características visuales mediante el uso de Java y la API REST Computer Vision.In this quickstart, you analyze a remotely stored image to extract visual features by using Java and the Computer Vision REST API. Con el método de análisis de imagen, puede extraer características visuales basadas en el contenido de una imagen.With the Analyze Image method, you can extract visual features based on image content.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don't have an Azure subscription, create a free account before you begin.

Requisitos previosPrerequisites

Creación y ejecución de la aplicación de ejemploCreate and run the sample application

Para crear y ejecutar el ejemplo, siga estos pasos:To create and run the sample, do the following steps:

  1. Cree un nuevo proyecto de Java en su IDE o editor favorito.Create a new Java project in your favorite IDE or editor. Si la opción está disponible, cree el proyecto de Java desde una plantilla de aplicación de línea de comandos.If the option is available, create the Java project from a command line application template.

  2. Importe las bibliotecas siguientes en el proyecto de Java.Import the following libraries into your Java project. Si usa Maven, se proporcionan las coordenadas de Maven para cada biblioteca.If you're using Maven, the Maven coordinates are provided for each library.

  3. Agregue las siguientes instrucciones import al archivo que contiene la clase pública Main para el proyecto.Add the following import statements to the file that contains the Main public class for your project.

    import java.net.URI;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.client.utils.URIBuilder;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.util.EntityUtils;
    import org.json.JSONObject;
    
  4. Reemplace la clase pública Main por el código siguiente.Replace the Main public class with the following code.

  5. También puede reemplazar el valor de imageToAnalyze por la dirección URL de una imagen diferente que desee analizar.Optionally, replace the value of imageToAnalyze with the URL of a different image that you want to analyze.

public class Main {
    // **********************************************
    // *** Update or verify the following values. ***
    // **********************************************

    // 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 = ("COMPUTER_VISION_ENDPOINT");

    private static final String uriBase = endpoint + 
            "vision/v2.0/analyze";
    private static final String imageToAnalyze =
            "https://upload.wikimedia.org/wikipedia/commons/" +
                    "1/12/Broadway_and_Times_Square_by_night.jpg";

    public static void main(String[] args) {
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();

        try {
            URIBuilder builder = new URIBuilder(uriBase);

            // Request parameters. All of them are optional.
            builder.setParameter("visualFeatures", "Categories,Description,Color");
            builder.setParameter("language", "en");

            // Prepare the URI for the REST API method.
            URI uri = builder.build();
            HttpPost request = new HttpPost(uri);

            // Request headers.
            request.setHeader("Content-Type", "application/json");
            request.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey);

            // Request body.
            StringEntity requestEntity =
                    new StringEntity("{\"url\":\"" + imageToAnalyze + "\"}");
            request.setEntity(requestEntity);

            // Call the REST API method and get the response entity.
            HttpResponse response = httpClient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) {
                // Format and display the JSON response.
                String jsonString = EntityUtils.toString(entity);
                JSONObject json = new JSONObject(jsonString);
                System.out.println("REST Response:\n");
                System.out.println(json.toString(2));
            }
        } catch (Exception e) {
            // Display error message.
            System.out.println(e.getMessage());
        }
    }
}

Compilación y ejecución del programaCompile and run the program

  1. Guárdela y compile el proyecto de Java.Save, then build the Java project.
  2. Si usa un IDE, ejecute Main.If you're using an IDE, run Main.

Como alternativa, si está ejecutando el programa desde una ventana de línea de comandos, ejecute los siguientes comandos.Alternately, if you're running the program from a command line window, run the following commands. Estos comandos suponen que las bibliotecas están en una carpeta denominada libs que se encuentra en la misma carpeta que Main.java; si no, deberá reemplazar libs por la ruta de acceso a las bibliotecas.These commands presume your libraries are in a folder named libs that is in the same folder as Main.java; if not, you will need to replace libs with the path to your libraries.

  1. Compile el archivo Main.java.Compile the file Main.java.

    javac -cp ".;libs/*" Main.java
    
  2. Ejecute el programa.Run the program. La solicitud se envía a QnA Maker API para crear la base de conocimiento y, luego, se sondean los resultados cada 30 segundos.It will send the request to the QnA Maker API to create the KB, then it will poll for the results every 30 seconds. Cada respuesta se imprime en la ventana de línea de comandos.Each response is printed to the command line window.

    java -cp ".;libs/*" Main
    

Examen de la respuestaExamine the response

Se devuelve una respuesta correcta en JSON.A successful response is returned in JSON. La aplicación de ejemplo analiza y muestra una respuesta correcta en la ventana de la consola, parecida a la del ejemplo siguiente:The sample application parses and displays a successful response in the console window, similar to the following example:

REST Response:

{
  "metadata": {
    "width": 1826,
    "format": "Jpeg",
    "height": 2436
  },
  "color": {
    "dominantColorForeground": "Brown",
    "isBWImg": false,
    "accentColor": "B74314",
    "dominantColorBackground": "Brown",
    "dominantColors": ["Brown"]
  },
  "requestId": "bbffe1a1-4fa3-4a6b-a4d5-a4964c58a811",
  "description": {
    "captions": [{
      "confidence": 0.8241405091548035,
      "text": "a group of people on a city street filled with traffic at night"
    }],
    "tags": [
      "outdoor",
      "building",
      "street",
      "city",
      "busy",
      "people",
      "filled",
      "traffic",
      "many",
      "table",
      "car",
      "group",
      "walking",
      "bunch",
      "crowded",
      "large",
      "night",
      "light",
      "standing",
      "man",
      "tall",
      "umbrella",
      "riding",
      "sign",
      "crowd"
    ]
  },
  "categories": [{
    "score": 0.625,
    "name": "outdoor_street"
  }]
}

Pasos siguientesNext steps

Explore una aplicación de Java Swing que usa Computer Vision para realizar el reconocimiento óptico de caracteres (OCR), crear miniaturas con recorte inteligente, y detectar, clasificar, etiquetar y describir características visuales, como caras, en una imagen.Explore a Java Swing 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. Para experimentar rápidamente con la versión de Computer Vision API, pruebe la consola de pruebas de Open API.To rapidly experiment with the Computer Vision API, try the Open API testing console.

Computer Vision API Java Tutorial (Tutorial de Computer Vision API para Java)Computer Vision API Java Tutorial