m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

AzureのFaceAPIをgo言語で試す

FaceAPIとは?

Face API - 顔認識 | Microsoft Azure
画像より顔を認識してその情報を返すAPI

準備

AzureでFaceAPIのサービスを開始してキーを取得刷る必要があります。

手順

その他サービスより検索

f:id:m_shige1979:20171105214729p:plain

Cognitiveサービスを開始する

f:id:m_shige1979:20171105214739p:plain

FaceAPIを検索して開始する

f:id:m_shige1979:20171105214748p:plain

作成に同意

f:id:m_shige1979:20171105214800p:plain

設定情報を入力して作成

f:id:m_shige1979:20171105214810p:plain

ダッシュボードに追加されたことを確認

f:id:m_shige1979:20171105214822p:plain

エンドポイントを確認

f:id:m_shige1979:20171105214834p:plain

キーを確認

f:id:m_shige1979:20171105214842p:plain

実装

sample1.go
package main

import (
    "log"
    "net/http"
    "bytes"
    "io/ioutil"
)

func main() {
    key1 := "アクセスキー"
    jsonStr := []byte(`{"url":"画像のURL"}`)

    // EndPoint
    endPoint := "https://eastasia.api.cognitive.microsoft.com/face/v1.0"

    // params
    paramStr := "/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age,gender,glasses"

    // URL
    url := endPoint + paramStr
    log.Println(url)

    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
    if err != nil {
        log.Fatal("Request:", err)
        return
    }

    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Ocp-Apim-Subscription-Key", key1)

    httpClient := &http.Client{}

    resp, err := httpClient.Do(req)
    if err != nil {
        log.Fatal("Do: ", err)
        return
    }

    defer resp.Body.Close()

    byteArray, _ := ioutil.ReadAll(resp.Body)
    log.Println(string(byteArray))

}

2017/11/05 21:43:24 https://eastasia.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age,gender,glasses
2017/11/05 21:43:25 [{"faceId":"4e075f28-ce54-4844-ac63-a4a77b5da9ce","faceRectangle":{"top":64,"left":121,"width":152,"height":152},"faceAttributes":{"gender":"male","age":44.8,"glasses":"NoGlasses"}}]

※サンプル画像はネットより拝借しました。m(_ _)m

所感

料金プランかなんかで速度とか変わると良いです。なんか時間としてはそんなに早く感じていないので