ぱっとみた感じは、なかなか良い精度で判定する模様です。画像の縦横比は1:1しかないみたいだけど、自分の目的としてはOK。
フロー
- flickrの画像URLを顔ラボAPIに渡します。
- 顔ラボの戻り値をflickrのnoteに設定
※flickrのflickr.photos.notes.addのAPIは500pxの画像をもとにnotoの位置指定をしますので500pxの画像(middle)を指定する必要があります
※当然flickrのappidや顔ラボAPIの認証キーは別途取得が必要です。
kaolab.py
- # coding: UTF-8
- import flickrapi
- import urllib2
- from lxml import objectify
- api_key = 'xxxxxxxx'
- secret_key = 'yyyyyy'
- my_id = 'xxxxx@N00'
- kao_id = 'aaaa'
- flickr = flickrapi.FlickrAPI(api_key,secret_key)
- #auth
- (token, frob) = flickr.get_token_part_one(perms='write')
- if not token: raw_input("Press ENTER after you authorized this program")
- flickr.get_token_part_two((token, frob))
- photo_id = 'bbbbb'
- path = 'http://farm4.static.flickr.com/3481/bbbbb_2505c93628.jpg'
- url = 'https://kaolabo.com/api/detect?apikey=' + kao_id + '&url='+path
- tree = objectify.parse(urllib2.urlopen(url))
- root = tree.getroot()
- o=0
- for face in root.faces.getchildren():
- h = root.faces.face[o].get("height")
- w = root.faces.face[o].get("width")
- x = root.faces.face[o].get("x")
- y = root.faces.face[o].get("y")
- score = root.faces.face[o].get("score")
- t = u'顔ラボAPI : http://kaolabo.com/webapi/'
- set_note = flickr.photos_notes_add(photo_id = photo_id,note_x = x ,note_y = y, note_w = w,note_h =h,note_text = t )
- o = o + 1