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


  1. # coding: UTF-8  
  2.   
  3. import flickrapi  
  4. import urllib2  
  5. from lxml import objectify  
  6.   
  7.   
  8.   
  9. api_key = 'xxxxxxxx'  
  10. secret_key = 'yyyyyy'  
  11. my_id = 'xxxxx@N00'  
  12. kao_id = 'aaaa'  
  13.   
  14. flickr = flickrapi.FlickrAPI(api_key,secret_key)  
  15.   
  16. #auth  
  17. (token, frob) = flickr.get_token_part_one(perms='write')  
  18. if not token: raw_input("Press ENTER after you authorized this program")  
  19. flickr.get_token_part_two((token, frob))  
  20.   
  21. photo_id  = 'bbbbb'  
  22. path = 'http://farm4.static.flickr.com/3481/bbbbb_2505c93628.jpg'  
  23. url = 'https://kaolabo.com/api/detect?apikey=' + kao_id + '&url='+path  
  24. tree = objectify.parse(urllib2.urlopen(url))  
  25. root = tree.getroot()  
  26. o=0  
  27. for face in root.faces.getchildren():  
  28.     h =  root.faces.face[o].get("height")  
  29.     w = root.faces.face[o].get("width")  
  30.     x = root.faces.face[o].get("x")  
  31.     y = root.faces.face[o].get("y")  
  32.     score =  root.faces.face[o].get("score")  
  33.     t = u'顔ラボAPI : http://kaolabo.com/webapi/'  
  34.     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 )  
  35.     o = o + 1  

0 件のコメント: