PythonでMicrosoftの顔認識APIをさわってみたときのメモ


[公式Documents](https://www.projectoxford.ai/doc/face/overview)をもとに、自分なりにコードを書いたときのメモ

※Subscription keyの入手方法については既に多くの方が記事にされていらっしゃるので、以下の方の記事などを参考に。
[RでMicrosoft Face APIsを実行する](http://estrellita.hatenablog.com/entry/2015/11/06/085412)

#環境(執筆時点での最新版)
- OS: Mac OS X El Capitan (10.11)
- python: 2.7.10
- package: projectoxford==0.1.3


#やってみる
とりあえず必要なパッケージをインストール。
requestsなどでもできるがprojectoxfordのほうが簡潔に書けるのでこちらを採用！


```zsh
$ pip install projectoxford
```

あとはsubscription keyと画像を用意して、プログラムを書く。

```face_api.py
import json, requests
from projectoxford import Client


client = Client('<your_subscription_key>')
res = {
    "url": "<image_url>",
    # or
    #'path': '</local/path/to/your_image>',
    'analyzesFaceLandmarks': True,
    'analyzesAge': True,
    'analyzesGender': True,
    'analyzesHeadPose': True,
}

result = client.face.detect(res)
print json.dumps(result, indent=4)

#detectの他に、groping, identify, verify, similarなど

```

ちなみに結果はこんな感じ。

```
$ python face_api.py

[
    {
        "attributes": {
            "gender": "male", 
            "age": 35, 
            "headPose": {
                "yaw": -7.7, 
                "roll": -5.7, 
                "pitch": 0.0
            }
        }, 
        "faceId": "************************", 
        "faceRectangle": {
            "width": 99, 
            "top": 80, 
            "height": 99, 
            "left": 201
        }, 
        "faceLandmarks": {
            "underLipTop": {
                "y": 160.5, 
                "x": 250.2
            }, 
            "noseTip": {
                "y": 129.7, 
                "x": 247.1
            }, 
            "upperLipBottom": {
                "y": 149.8, 
                "x": 249.5
            }, 
            "noseLeftAlarTop": {
                "y": 124.6, 
                "x": 240.2
            }, 
            "eyebrowLeftOuter": {
                "y": 107.8, 
                "x": 208.7
            }, 
            "eyeLeftBottom": {
                "y": 112.8, 
                "x": 226.7
            }, 
            "pupilLeft": {
                "y": 110.1, 
                "x": 228.2
            }, 
            "upperLipTop": {
                "y": 145.1, 
                "x": 249.1
            }, 
            "eyeLeftInner": {
                "y": 110.3, 
                "x": 234.0
            }, 
            "eyeRightInner": {
                "y": 107.0, 
                "x": 262.8
            }, 
            "eyeLeftTop": {
                "y": 108.5, 
                "x": 227.0
            }, 
            "mouthLeft": {
                "y": 155.5, 
                "x": 233.0
            }, 
            "noseRightAlarTop": {
                "y": 122.7, 
                "x": 258.3
            }, 
            "eyebrowRightInner": {
                "y": 101.1, 
                "x": 253.9
            }, 
            "noseLeftAlarOutTip": {
                "y": 133.7, 
                "x": 234.8
            }, 
            "noseRightAlarOutTip": {
                "y": 130.4, 
                "x": 263.9
            }, 
            "noseRootRight": {
                "y": 109.6, 
                "x": 253.9
            }, 
            "eyeLeftOuter": {
                "y": 112.4, 
                "x": 219.9
            }, 
            "underLipBottom": {
                "y": 166.9, 
                "x": 251.3
            }, 
            "eyeRightTop": {
                "y": 102.8, 
                "x": 269.8
            }, 
            "eyeRightOuter": {
                "y": 105.1, 
                "x": 276.1
            }, 
            "noseRootLeft": {
                "y": 110.9, 
                "x": 240.6
            }, 
            "eyebrowRightOuter": {
                "y": 96.1, 
                "x": 286.1
            }, 
            "eyeRightBottom": {
                "y": 107.0, 
                "x": 270.2
            }, 
            "eyebrowLeftInner": {
                "y": 104.1, 
                "x": 234.6
            }, 
            "mouthRight": {
                "y": 150.6, 
                "x": 272.5
            }, 
            "pupilRight": {
                "y": 104.4, 
                "x": 270.5
            }
        }
    }
]
```