原則1時間あたり100回までです。 API制限を引き上げたい方はお問い合わせ下さい。
パラメータ名 | 内容 |
---|---|
image_data | jpegかpngフォーマットの画像データ(multipart) |
#!/usr/bin/env ruby
# 依存ライブラリのインストールが必要です
# $ gem install rest-client
require 'rest-client'
require 'json'
url = 'https://ai-api.userlocal.jp/face'
image = File.new('path/to/image')
params = {
image_data: image,
multipart: true
}
RestClient.post(url, params) do |response, _, _|
data = JSON.parse(response.body)
data['result'].each.with_index(1) do |d, i|
puts <<~EOS
年齢: #{d['age']}
感情: #{d['emotion']}
性別: #{d['gender']}
顔の向き: #{d['head_pose']}
顔の位置: #{d['location']}
#{d}
EOS
end
end
#!/usr/bin/env python
# coding: utf-8
# 依存ライブラリのインストールが必要です
# $ pip install requests
import requests
import json
image_path = '/path/to/image'
image = open(image_path, 'rb').read()
url = "https://ai-api.userlocal.jp/face"
res = requests.post(url, files={"image_data": image})
data = json.loads(res.content)
result = data['result']
for r in result:
print(f"""
年齢: {r['age']}
感情: {r['emotion']}
性別: {r['gender']}
顔の向き: {r['head_pose']}
顔の位置: {r['location']}
""")
<?php
$target="https://ai-api.userlocal.jp/face";
# http://php.net/manual/en/curlfile.construct.php
// Create a CURLFile object / procedural method
$cfile = curl_file_create('path/to/image','image/jpeg'); // try adding
// Assign POST data
$imgdata = array('image_data' => $cfile);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $target);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // stop verifying certificate
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true); // enable posting
curl_setopt($curl, CURLOPT_POSTFIELDS, $imgdata); // post images
//curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); // if any redirection after upload
$r = curl_exec($curl);
curl_close($curl);
$data = json_decode($r, true);
foreach ($data['result'] as $i => $d){
echo "年齢 ${d['age']}\n";
echo "性別 ${d['gender']}\n";
echo "感情 ${d['emotion']}\n";
};
?>
{
"status": "ok",
"result": [
{
"age": 20.58,
"gender": "Female",
"emotion": "neutral",
"emotion_detail": {
"anger": 0.08,
"happy": 0.14,
"neutral": 0.69,
"sad": 0.03,
"surprise": 0.03
},
"head_pose": {
"pitch": 0.23,
"roll": 4.15,
"yaw": 23.06
},
"location": {
"height": 455,
"width": 358,
"x1": 334,
"x2": 692,
"y1": 143,
"y2": 598
}
}
],
}
フィールド | 形式 | 内容 |
---|---|---|
status | String | 成功時"ok"。失敗時"error"。 詳細は別表を参照。 |
gender | String | 性別。 男性: "Male", 女性: "Female" |
result | Array<Dict> | 認識した顔それぞれの詳細情報を含む。 |
age | Number | 推定される年齢。 ex) 22.29 |
location | Dict | 顔の検出位置情報。 |
location:x1 | Number | 顔の検出範囲の左上の点のx座標。 |
location:y1 | Number | 顔の検出範囲の左上の点のy座標。 |
location:x2 | Number | 顔の検出範囲の右下の点のx座標。 |
location:y2 | Number | 顔の検出範囲の右下の点のy座標。 |
location:width | Number | 検出範囲の幅。 |
location:height | Number | 検出範囲の高さ。 |
emotion | String | 顔から推論された感情 |
emotion | String | 顔から推論された感情 |
emotion_detail | Dict | それぞれの表情の度合い |
emotion_detail:anger | Number | 怒っている表情をしている度合い |
emotion_detail:happy | Number | 喜んでいる表情をしている度合い |
emotion_detail:neutral | Number | 通常の表情をしている度合い |
emotion_detail:sad | Number | 悲しんでいる表情をしている度合い |
emotion_detail:suprise | Number | 驚いている表情をしている度合い |
head_pose | Dict | 顔の姿勢 |
head_pose:pitch | Number | 顔のy軸方向の回転。縦への傾きの量 |
head_pose:yaw | Number | 顔のz軸方向の回転。首を回転させている量 |
head_pose:roll | Number | 顔のx軸に対する回転。横への傾きの量 |
status code | error type | error message detail | 説明 |
---|---|---|---|
400 | Bad Request | image_data is required. | image_dataパラメータが必要です。 |
400 | Bad Request | File is not image. | アップロードされたファイルが画像でないときに発生するエラーです。 |
400 | Bad Request | File format must be PNG or JPEG. | アップロードされたファイルのフォーマットはJPEGかPNGである必要があります。 |
429 | Too many request | too many request | 1時間に100回以上のリクエストをすると発生するエラーです。 |
500 | Internal server error | Internal server error | サーバー内部でエラーが発生した場合のエラーです。 |
{
status: "error",
error_type: "Bad Request",
error_message_detail: "File is not image"
}