Rufen Sie die Microsoft Emotion API auf, indem Sie Bilddaten direkt von Java senden.

Was ist die Emotion API?

Als einer der Microsoft Azure Cognitive Services liest er Emotionen aus den Gesichtern von Personen, z. B. Fotos. Weitere Informationen finden Sie hier (https://azure.microsoft.com/ja-jp/services/cognitive-services/emotion/). Ab dem 24. Juni 2017 können Sie es teilweise kostenlos nutzen.

Warum Java?

Es gibt keinen besonderen Grund. Es gibt offiziell eine Beispielimplementierung in Java, aber da es nur eine gab, die die URL mit dem Bild sendet, habe ich versucht, die Methode zum direkten Senden des Bildes zu implementieren.

Umgebung

Java:1.8.0_131 Emotion Api : 1.0

Verfahren

Abonnementregistrierung

Registrieren Sie ein Abonnement. Offizielle Website Sie können sich registrieren, indem Sie auf Erstellen aus dem Tag "Testversion" klicken. Eine 32-stellige Taste wird ausgegeben. Also speichere es.

Fügen Sie pom.xml eine Abhängigkeit hinzu

Fügen Sie Folgendes hinzu:

pom.xml


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

Erstellen eines EmotionApiClient

Fast das gleiche wie die Beispielquelle, jedoch wie folgt implementiert. Das Argument der Methode ist ein Byte-Array der Bilddatei. Das Ergebnis wird als JSON an den Aufrufer zurückgegeben.

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 = "32-stelliger Schlüssel oben ausgegeben";

	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);

            //Sie sollten den Status überprüfen.
            HttpEntity entity = response.getEntity();

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

		return "";
	}
 }

Am Ende

Die Implementierung war einfacher als ich es mir vorgestellt hatte. Ich möchte versuchen zu sehen, wie viel es an hellen und dunklen Orten erkannt werden kann.

Recommended Posts

Rufen Sie die Microsoft Emotion API auf, indem Sie Bilddaten direkt von Java senden.
Rufen Sie die Java-API von TensorFlow von Scala aus auf
Datenverarbeitung mit der Stream-API von Java 8
Rufen Sie die GitHub-API über Javas Socket-API Teil2 auf
Rufen Sie die Windows-Benachrichtigungs-API in Java auf
Rufen Sie die Salesforce REST-API von Java aus auf
Versuchen Sie es mit der Emotion API von Android
Informationen zu CLDR-Gebietsschemadaten, die standardmäßig in Java 9 aktiviert sind
Rufen Sie Java von JRuby aus auf
[MT] Geben Sie die Artikelkategorie von Android mit Daten-API an
[IOS 14] Wie erhalte ich Bilddaten vom Datentyp direkt von PHPickerViewController?
[MT] Geben Sie die Artikelkategorie von Android mit Daten-API an
Versuchen Sie es mit der Emotion API von Android
Kompatibel mit Android 10 (API 29)
Lassen Sie das Armbandgerät mit Bluetooth über die Android-App vibrieren
Android-Entwicklung - WEB-Zugriff (GET) Versuchen Sie, Daten durch Kommunikation mit der Außenwelt abzurufen. ~
Rufen Sie die Microsoft Emotion API auf, indem Sie Bilddaten direkt von Java senden.
SetCookie von der Client-Seite mit OkHttp3
Datenverarbeitung mit der Stream-API von Java 8
Rufen Sie die Salesforce REST-API von Java aus auf
Finden Sie Raspberry Pi von Android mit mDNS
Android Development-WEB Access (POST) Versuchen Sie, mit der Außenwelt zu kommunizieren und Daten zu senden. ~
Greifen Sie von einem Java-Client aus auf das speicherinterne Datenraster Apache Ignite zu
Beispielcode zum Aufrufen der Yahoo! Local Search API in Java