2.1 /quality/face/stateless
顔写真品質チェックのインターフェースです。
顔写真の規格は、運用マニュアルの3章 写真と動画の規格をご参照ください。
リクエストモード
POST
リクエスト URL
http://ip:port/quality/face/stateless
リクエストパラメーター
通常のレスポンス
{
"code": 1000,
"faces": [
{
"rect": { # 顔枠の位置
"left": integer, # 顔枠の左端の水平座標、写真の左上を原点とする
"top": integer, # 顔枠の上枠の垂直座標、写真の左上隅を原点とする
"right": integer, # 顔枠の右端の水平座標、写真の左上隅を原点とする
"bottom": integer # 顔枠の下枠の垂直座標、写真の左上を原点とする
"pose": { # ポーズ角度情報
"yaw": float, # Y 軸角度を示します
"pitch": float, # X 軸角度を示します
"roll": float # Z 軸角度を示します
},
"occlusion":{ # 顔の遮蔽情報
"left_eye": float, # 左目が遮られていない割合, 値 [0,1], 値が大きいほど遮られていない
"right_eye": float, # 右目が遮られていない割合, 値 [0,1], 値が大きいほど遮られていない
"nose": float, # 鼻の遮られていない割合、値 [0,1]、値が大きいほど遮られていない
"mouth": float, # 口の遮られていない割合、値 [0,1]、値が大きいほど遮られていない
"total": float # 顔の遮られていない総合割合、値 [0,1]、値が大きいほど遮られていない
},
"distance2center": float, # 顔から写真の中心までの距離、範囲 [0,1] で、スコアが高いほど、顔が写真の中心に近いことを表します。計算方法:max(1 - 五官中心から写真中心への距離 / 写真の短辺の距離, 0)
"size": float, # 顔が写真に面積の割合、範囲 [0,1] で、スコアが高いほど、顔の面積割合が大きいことを表します。計算方法:五官が写真に占める面積 / 写真の面積
"brightness": float, # 顔の明るさのスコア, 範囲は [-1,1] で, スコアが高いほど明るさが高いことを表します
"sharpness": float, # 鮮明度スコア, 値の範囲 [0,1], スコアが高いほど鮮明になります
"mouth_open": float, # 口の開き具合, [0,1]の範囲内の値, スコアが高いほど口の開き具合が低くなります
"integrity": float # 写真中の顔の完全性, 値の範囲 [0,1], スコアが高いほど写真中の顔が完全である、計算式: 写真中の顔の面積 / 顔の面積
}
],
"request_id": string
}
異常なレスポンス
{
"code": int,
"message": string,
"request_id": string
}
システムレスポンスコードの説明
可能なHTTPステータスコード
サンプル
curl -X POST "http://ip:port/quality/face/stateless" \
-d encrypted_image=xxx
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public class HttpClient {
public static final String POST_URL = "http://127.0.0.1:3000/quality/face/stateless";
private static AESCipher cipher = new AESCipher("dcbbad6765e14139a07d34b92292a672", "df25d188a061");
public static void Post() throws Exception {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost post = new HttpPost(POST_URL);
List<NameValuePair> params = new ArrayList<>();
String encryptedImage = cipher.encrypt(
Files.readAllBytes(Paths.get("src/main/resources/face_01.jpg")));
params.add(new BasicNameValuePair("encrypted_image", encryptedImage));
post.setEntity(new UrlEncodedFormEntity(params));
HttpResponse response = httpclient.execute(post);
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity respEntity = response.getEntity();
BufferedReader reader = new BufferedReader(new InputStreamReader(respEntity.getContent()));
String line = reader.readLine();
System.out.println(line);
} else {
HttpEntity respEntity = response.getEntity();
String responseString = EntityUtils.toString(respEntity);
System.out.println("error:" + response.getStatusLine().getStatusCode()
+ " " + response.getStatusLine().getReasonPhrase());
System.out.println("cause of error:" +responseString);
}
}
public static void main(String[] args) throws Exception {
Post();
}
}