Face API Java 퀵 스타트
등록일시: 2017-12-26 08:00,
수정일시: 2017-12-26 08:00
조회수: 4,643
이 문서는 Cognitive Services 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다.
이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다.
번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다.
번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.
- 본 번역문서의 원문은 Face API Java Quick Starts docs.microsoft.com 입니다.
본문에서는 Java와 Face API를 사용해서 다음과 같은 작업을 신속하게 수행하기 위해 필요한 유용한 정보와 예제 코드를 제공합니다:
요구 사항
Java를 이용해서 Face API로 이미지의 얼굴 감지하기
Face - Detect 메서드를 이용해서 이미지의 얼굴을 감지하고 다음과 같은 얼굴 특징을 반환받습니다:
- 얼굴 ID: 다양한 Face API 시나리오에서 사용되는 얼굴의 고유 ID
- 얼굴 사각형: 이미지 내의 얼굴 위치를 나타내는 Left, Top, Width, Height
- 랜드마크: 얼굴 구성 요소의 중요한 위치를 나타내는 27 곳의 얼굴 랜드마크 배열
- 나이, 성별, 미소짓는 정도, 머리 자세 및 얼굴의 털을 비롯한 얼굴 특징
얼굴 감지 Java 요청 예제
예제 응용 프로그램을 실행하려면 다음의 과정을 따라하십시오:
- 새로운 명령줄 응용 프로그램을 생성합니다.
-
Main 클래스의 내용을 다음 코드로 대체합니다 (
package
구문은 그대로 유지합니다). -
subscriptionKey
의 값을 여러분이 발급받은 유효한 구독 키로 변경합니다. -
필요한 경우,
uriBase
의 값을 구독 키를 발급받은 지역의 URL 주소로 변경합니다. -
다음 글로벌 라이브러리들을 Maven 저장소에서 프로젝트의
lib
디렉터리에 다운로드 합니다:-
org.apache.httpcomponents:httpclient:4.2.4
-
org.json:json:20170516
-
- Main 클래스를 실행합니다.
// This sample uses the Apache HTTP client library(org.apache.httpcomponents:httpclient:4.2.4)
// and the org.json library (org.json:json:20170516).
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.entity.StringEntity;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;
public class Main
{
// **********************************************
// *** Update or verify the following values. ***
// **********************************************
// Replace the subscriptionKey string value with your valid subscription key.
public static final String subscriptionKey = "13hc77781f7e4b19b5fcdd72a8df7156";
// Replace or verify the region.
//
// You must use the same region in your REST API call as you used to obtain your subscription keys.
// For example, if you obtained your subscription keys from the westus region, replace
// "westcentralus" in the URI below with "westus".
//
// NOTE: Free trial subscription keys are generated in the westcentralus region, so if you are using
// a free trial subscription key, you should not need to change this region.
public static final String uriBase = "https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect";
public static void main(String[] args)
{
HttpClient httpclient = new DefaultHttpClient();
try
{
URIBuilder builder = new URIBuilder(uriBase);
// Request parameters. All of them are optional.
builder.setParameter("returnFaceId", "true");
builder.setParameter("returnFaceLandmarks", "false");
builder.setParameter("returnFaceAttributes", "age,gender,headPose,smile,facialHair,glasses,emotion,hair,makeup,occlusion,accessories,blur,exposure,noise");
// Prepare the URI for the REST API call.
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 reqEntity = new StringEntity("{\"url\":\"https://upload.wikimedia.org/wikipedia/commons/c/c3/RH_Louise_Lillian_Gish.jpg\"}");
request.setEntity(reqEntity);
// Execute the REST API call and get the response entity.
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null)
{
// Format and display the JSON response.
System.out.println("REST Response:\n");
String jsonString = EntityUtils.toString(entity).trim();
if (jsonString.charAt(0) == '[') {
JSONArray jsonArray = new JSONArray(jsonString);
System.out.println(jsonArray.toString(2));
}
else if (jsonString.charAt(0) == '{') {
JSONObject jsonObject = new JSONObject(jsonString);
System.out.println(jsonObject.toString(2));
} else {
System.out.println(jsonString);
}
}
}
catch (Exception e)
{
// Display error message.
System.out.println(e.getMessage());
}
}
}
얼굴 감지 결과 응답 살펴보기
정상적으로 처리된 응답은 JSON 형식으로 반환됩니다. 다음은 성공한 응답의 사례입니다:
REST Response:
[{
"faceRectangle": {
"top": 131,
"left": 177,
"width": 162,
"height": 162
},
"faceAttributes": {
"makeup": {
"eyeMakeup": true,
"lipMakeup": true
},
"facialHair": {
"sideburns": 0,
"beard": 0,
"moustache": 0
},
"gender": "female",
"accessories": [],
"blur": {
"blurLevel": "low",
"value": 0.06
},
"headPose": {
"roll": 0.1,
"pitch": 0,
"yaw": -32.9
},
"smile": 0,
"glasses": "NoGlasses",
"hair": {
"bald": 0,
"invisible": false,
"hairColor": [
{
"color": "brown",
"confidence": 1
},
{
"color": "black",
"confidence": 0.87
},
{
"color": "other",
"confidence": 0.51
},
{
"color": "blond",
"confidence": 0.08
},
{
"color": "red",
"confidence": 0.08
},
{
"color": "gray",
"confidence": 0.02
}
]
},
"emotion": {
"contempt": 0,
"surprise": 0.005,
"happiness": 0,
"neutral": 0.986,
"sadness": 0.009,
"disgust": 0,
"anger": 0,
"fear": 0
},
"exposure": {
"value": 0.67,
"exposureLevel": "goodExposure"
},
"occlusion": {
"eyeOccluded": false,
"mouthOccluded": false,
"foreheadOccluded": false
},
"noise": {
"noiseLevel": "low",
"value": 0
},
"age": 22.9
},
"faceId": "49d55c17-e018-4a42-ba7b-8cbbdfae7c6f"
}]
Process finished with exit code 0
Java를 이용해서 Face API로 인물 그룹 생성하기
Person Group - Create a Person Group 메서드를 이용해서 지정한 인물 그룹 ID (personGroupId), 이름 (name) 및 사용자가 제공한 사용자 데이터로 (userData) 인물 그룹을 생성합니다. 인물 그룹은 Face-Identify API의 가장 중요한 매개 변수 중 하나입니다. Identify API는 지정한 인물 그룹에서 인물의 얼굴을 검색합니다.
Person Group - Create a Person Group Java 요청 예제
REST URL을 여러분이 구독 키를 발급받은 지역을 사용하도록 변경하고, "Ocp-Apim-Subscription-Key" 값을 유효한 구독 키로 대체합니다.
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
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.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class Main
{
public static void main(String[] args)
{
HttpClient httpClient = new DefaultHttpClient();
try
{
// The valid characters for the ID below include numbers, English letters in lower case, '-', and '_'.
// The maximum length of the personGroupId is 64.
String personGroupId = "example-group-00";
// NOTE: You must use the same region in your REST call as you used to obtain your subscription keys.
// For example, if you obtained your subscription keys from westus, replace "westcentralus" in the
// URL below with "westus".
URIBuilder builder = new URIBuilder("https://westcentralus.api.cognitive.microsoft.com/face/v1.0/persongroups/" +
personGroupId);
URI uri = builder.build();
HttpPut request = new HttpPut(uri);
// Request headers. Replace the example key with your valid subscription key.
request.setHeader("Content-Type", "application/json");
request.setHeader("Ocp-Apim-Subscription-Key", "13hc77781f7e4b19b5fcdd72a8df7156");
// Request body. The name field is the display name you want for the group (must be under 128 characters).
// The size limit for what you want to include in the userData field is 16KB.
String body = "{ \"name\":\"My Group\",\"userData\":\"User-provided data attached to the person group.\" }";
StringEntity reqEntity = new StringEntity(body);
request.setEntity(reqEntity);
HttpResponse response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null)
{
System.out.println(EntityUtils.toString(entity));
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
INDEX: Vision: Face 기술문서 번역
- Face API 2017-12-05 08:00
- 이미지에서 얼굴 감지하기 2017-12-07 08:00
- 이미지의 얼굴 식별하기 2017-12-12 08:00
- 얼굴을 대량으로 추가하는 방법 2017-12-14 08:00
- Face API cURL 퀵 스타트 2017-12-19 08:00
- Face API C# 퀵 스타트 2017-12-21 08:00
- Face API Java 퀵 스타트 2017-12-26 08:00
- Face API JavaScript 퀵 스타트 2017-12-28 08:00
- Face API 시작하기 C# 자습서 2018-01-02 08:00
- Face API 시작하기 Android Java 자습서 2018-01-04 08:00