2009年1月27日火曜日

flickrと顔ラボAPIの連携(python flickrapi版) はてなブックマークに追加

富士フィルムの顔ラボAPIを使ってみたくなったのでちょっとテスト。
ぱっとみた感じは、なかなか良い精度で判定する模様です。画像の縦横比は1:1しかないみたいだけど、自分の目的としてはOK。

フロー
  1. flickrの画像URLを顔ラボAPIに渡します。
  2. 顔ラボの戻り値を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

0 件のコメント: