6.2.1. /quality/face/stateless
顔画像品質チェックのインターフェースです。
注意:画像ファイルには複数の顔が含まれることは可能
顔画像は、以下の要件を満たすものとします。
JPG (JPEG)、BMP、PNG、GIF、TIFF のいずれかの形式
幅と高さは 8 px 以上 5,000 px 以下
ファイルサイズは 5 MB 以下
リクエストモード
POST
リクエスト URL
http://ip:port/quality/face/stateless
リクエストパラメーター
フィールド
型
必須
説明
通常のレスポンス
フィールド
型
説明
request_id
string
このリクエストのID
code
int
システムレスポンスコード: 1000
faces
Array
写真に写っている各顔のクオリティーについての情報
{
"code": integer, # システム応答コード. 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 # リクエストのID
}
異常なレスポンス
フィールド
型
説明
request_id
string
リクエストのID
code
int
システムレスポンスコード
message
string
エラーメッセージ
{
'request_id': 'xxx',
'code': xxx,
'message': xxx
}
システムレスポンスコードの説明
コード
フィールドの値
説明
1200
invalid argument
無効な入力パラメーター
2003
invalid image size
画像サイズが要件を満たしていません
2004
invalid content length
画像ボリュームが要件を満たしていません
2005
invalid image type
画像タイプが要件を満たしていません
2006
corrupted image error
画像が破損しています
4000
detection failed
特徴の抽出に失敗しました。画像に顔が検出されませんでした。
可能性のある http ステータスコード:
ステータスコード
ステータスフィールド
400
BAD_REQUEST
404
NOT_FOUND
411
LENGTH_REQUIRED
413
PAYLOAD_TOO_LARGE
500
INTERNAL_ERROR
使用サンプル
curl サンプル
curl -X POST "http://ip:port/quality/face/stateless" \
-d encrypted_image=xxx
Java サンプル
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();
}
}
Last updated
Was this helpful?