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.
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.
Java:1.8.0_131 Emotion Api : 1.0
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 Folgendes hinzu:
pom.xml
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
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 "";
}
}
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