Marilenaでアイドル(3)

080708.jpg

さてさて。
もうてらこで発表してからだいぶたってしまいましたが、
この無駄に長く解説してきたシリーズも今回で最後です。
前回前々回からどうぞ。


って言っても、もうほとんど終わっているので、解説するところはほとんどないんですが、、。

FlickrとMarilena

前々回、一番最初で、Marilenaの使い方を説明しました。
その時に、ここに画像のURLを入れればいい、と書いたと思います。
それがここ。

public function FaceDetector() {
  initUI();
  initDetector();
  faceImage.load( new URLRequest("<b>013.jpg</b>") );
}

で、as3flickrlibを使用して、Flickr上の画像のURLをゲット。
それがこれ。

var photoArr : Array = e.data.photos.photos;
for(var i:Number = 0; i&lt;photoArr.length; i++){
farm = photoArr[i].farm;
server = photoArr[i].server;
id = photoArr[i].id;
secret = photoArr[i].secret;
owner = photoArr[i].ownerId;
//画像のURL
trace( 'http://farm' + farm + '.static.flickr.com/' + server + '/' + id + '_' + secret + '.jpg');
}

もうおわかりのように、これでFlickrから取得してきたURLを、Marilenaに渡してやることが出来ます。
これによって、Flickrの画像を顔認識にかけてやることができます。

で、エロく

あとは、顔と判定されたポイント(Rectangleで返ってくる)をもとに、
顔からした、顔が半分切れたバストショットになるように調整。

調整した結果が、これ。

顔とバストショットの関係図

緑の枠が、Marilenaで取ってきた顔の範囲で、青の枠がそこから割り出した見せたい範囲。
割り出した、っても実際に目で確認しながら調整しただけ。
顔の範囲の下半分から始めて、顔の範囲の高さの三倍分の高さにしただけ。
式にするとこう。

//顔の範囲を rect とする
xx = rect.x - rect.width / 2;
yy = rect.y + rect.height / 2;
ww = rect.width * 2;
hh = rect.height * 3;

結果的にたいていのものが上手くいったので、これでいいか、ってことで。
(顔認識自体が上手くいってないものは除いて)

まとめ

だいたい以上で終了。
自分のわかってる範囲で、説明しきったはずです。

最後にソースを一式アップしときます。
ほんと、既存のものをいじっただけ&汚いソースですが、、、。

ソース(164.4Kbyte)

※動作させるには別途、以下が必要です。(ライブラリ)
Marilena
as3flickrlib
as3corelib
tweener

FlashCS3で、Main.asをドキュメントクラスに設定してお使い下さい。

・Marilenaシリーズ
Marilenaでアイドル(1)
Marilenaでアイドル(2)


Facebook

Comment

  1. [...] 07.09 Marilenaでアイドル(3) [...]

  2. [...] » Marilenaでアイドル(3) trace 6.12.09 / 7pm [...]

Post Comment