Appelez l'API Microsoft Emotion en envoyant des données d'image directement depuis Java.

Qu'est-ce que l'API Emotion?

Un des services cognitifs de Microsoft Azure, il lit les émotions des visages des gens, comme les photos. Pour plus d'informations, cliquez ici (https://azure.microsoft.com/ja-jp/services/cognitive-services/emotion/) Depuis le 24 juin 2017, vous pouvez l'utiliser gratuitement dans une certaine mesure.

Pourquoi Java?

Il n'y a pas de raison particulière. Il existe officiellement un exemple d'implémentation en Java, mais comme il n'y en avait qu'un seul qui envoie l'URL avec l'image, j'ai essayé l'implémentation de la méthode d'envoi direct de l'image.

environnement

Java:1.8.0_131 Emotion Api : 1.0

procédure

Inscription à l'abonnement

Enregistrez un abonnement. Site officiel Vous pouvez vous inscrire en appuyant sur Créer à partir de la balise "Version d'essai", et une clé à 32 chiffres sera émise. Alors enregistrez-le.

Ajouter une dépendance à pom.xml

Ajoutez ce qui suit:

pom.xml


<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.5.3</version>
</dependency>

Créer un EmotionApiClient

Presque identique à la source de l'échantillon, mais implémentée comme suit. L'argument de la méthode est un tableau d'octets du fichier image. Le résultat est renvoyé à l'appelant en tant que JSON.

EmotionApiClient.java


import java.net.URI;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

public class EmotionApiClient {

	private final String KEY = "Clé à 32 chiffres émise ci-dessus";

	String postApi(byte[] image) {
        HttpClient httpClient = HttpClientBuilder.create().build();


        try
        {
            URIBuilder uriBuilder = new URIBuilder("https://westus.api.cognitive.microsoft.com/emotion/v1.0/recognize");

            URI uri = uriBuilder.build();
            HttpPost request = new HttpPost(uri);

            request.setHeader("Content-Type", "application/octet-stream");
            request.setHeader("Ocp-Apim-Subscription-Key", KEY);

            ByteArrayEntity reqEntity = new ByteArrayEntity(image);
            request.setEntity(reqEntity);

            HttpResponse response = httpClient.execute(request);

            //Vous devriez vérifier le statut.
            HttpEntity entity = response.getEntity();

            if (entity != null)
            {
            	return EntityUtils.toString(entity);
            }
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }

		return "";
	}
 }

À la fin

C'était plus facile que je ne l'imaginais à mettre en œuvre. Je voudrais essayer de voir à quel point il peut être reconnu dans les endroits lumineux et sombres.

Recommended Posts

Appelez l'API Microsoft Emotion en envoyant des données d'image directement depuis Java.
Appelez l'API Java de TensorFlow depuis Scala
Traitement des données à l'aide de l'API de flux de Java 8
Appeler l'API GitHub à partir de l'API Socket de Java, partie 2
Appelez l'API de notification Windows en Java
Accédez à l'API REST Salesforce depuis Java
Essayez d'utiliser l'API Emotion d'Android
À propos des données locales CLDR activées par défaut à partir de Java 9
Appeler Java depuis JRuby
[MT] Spécifiez la catégorie d'article d'Android avec l'API de données
[IOS 14] Comment obtenir des données d'image de type Data directement à partir de PHPickerViewController?
[MT] Spécifiez la catégorie d'article d'Android avec l'API de données
Essayez d'utiliser l'API Emotion d'Android
Compatible avec Android 10 (API 29)
Faire vibrer le bracelet avec Bluetooth à partir de l'application Android
Développement Android-Accès WEB (GET) Essayez d'obtenir des données en communiquant avec l'extérieur. ~
Appelez l'API Microsoft Emotion en envoyant des données d'image directement depuis Java.
SetCookie du côté client avec OkHttp3
Traitement des données à l'aide de l'API de flux de Java 8
Accédez à l'API REST Salesforce depuis Java
Trouvez Raspberry Pi d'Android avec mDNS
Développement Android-Accès WEB (POST) Essayez de communiquer avec l'extérieur et d'envoyer des données. ~
Accédez à la grille de données en mémoire Apache Ignite à partir d'un client Java
Exemple de code pour appeler l'API Yahoo! Local Search en Java