2008年02月10日

ホントはみんな怒っているサービス「カチッ(怒)」

カチッ(怒) 富士フイルムが「顔ラボ」というサイトを公開していて、写真から顔の位置を認識することができるWebAPIが公開されてます。
人の顔が写ったJPEG画像を渡すと、どこどこに顔がありますと教えてくれるんです。スゲー。

ちょっと前に写真に移っている人の顔を笑い男にするサービスがありましたが、この顔ラボAPIを使えばそういうのが自分でも作れるわけです。面白!!

というわけでさっそく作ってみました。写真のURLを指定すると、顔の横に怒りマークを付けます。怒りマーク、こめかみの神経を示したアレです。
電球付けてひらめきとかも考えたけど、やっぱり怒りマークの方がしっくりきます。
よろしければ使ってみて下さい。

ホントはみんな怒っているサービス「カチッ(怒)」
http://kazina.com/kachi/

ちなみに自分、「なんちゃって個人情報」とかも公開してますが、いわゆるWebプログラミングがさっぱりわかりません。なんちゃって個人情報だって、できる方なら作るのに10分もかからないんじゃないでしょか。そんなわけで、この「カチッ(怒)」もできる方にはちょー簡単でしょうが、自分にはすごく勉強になりました。

ImageMagickのReadメソッドにはURLを直接渡せる。
Perlで画像を扱うモジュールはImageMagickの他にもGD、Imagerなどがあるらしいですが、よくわかんないのでとりあえずImageMagickを使いました。なにしろこちらのPerlMagickドキュメントがわかりやすいので。
http://www.ss.iij4u.or.jp/~somali/web/_perlmagick_ref.html
画像のURLからどうやって読み込むんだろうと悩んだものの、$image->Read($url)であっさり読み込めてしまいました。あんまりいい方法ではなさそうだけども。

httpとかhttpsでURLに接続してデータを得るには、LWP::UserAgentを使う。
顔ラボのAPIに接続して結果を得る部分はどうすんだろと調べたら、LWP::UserAgentというモジュールがブラウザの代わりを全部やってくれるみたいです。あと顔ラボはhttpではなくhttpsなのですが、その辺もモジュール任せでバッチリです。
ただし、httpsへの接続にはCrypt::SSLeayというモジュールが別途必要みたい。ローカルのActivePerlには入ってなかったのでppmでインストールしたものの、結局「Crypt::SSLeayがインストールされていない」とうまく動かず。なんでだろう。モジュールチェックではちゃんと入ってるのに。ちぇっ。

XMLの解析にはXML::Simpleを使う。
顔ラボのWebAPIから返ってくるのはXMLデータなので、その解析にはXML::Simpleを使用。こちらの「XML::Simpleの使い方」がとてもわかりやすい。
http://www.web-ware.org/npindex/67/

加工した画像をどうやって表示するか。→わからず(笑)
この手の「画像を出力するジェネレータ」系はたいがい、できあがった画像をサーバーに保存してから表示し、一定期間とかで削除するのが普通だと思うんですが、どれくらいの量保存しておくのかとか、しばらく経ったら削除する方法とか、定石みたいなものが自分にはサッパリわかりません。めんどいので画像だけ出力することにしました(笑)。下手に作ったらサーバーにすっげー負荷とかかけちゃいそうだし。どなたかやり方教えて下さい……

とまあ、この程度の素人でもこんなのが作れちゃうので、自分みたく「Webプログラミングは……」という方もどんどん作ったらいいと思います。

この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。