Marilenaでアイドル(3)

さてさて。
もうてらこで発表してからだいぶたってしまいましたが、
この無駄に長く解説してきたシリーズも今回で最後です。
前回、前々回からどうぞ。
って言っても、もうほとんど終わっているので、解説するところはほとんどないんですが、、。
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<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;
結果的にたいていのものが上手くいったので、これでいいか、ってことで。
(顔認識自体が上手くいってないものは除いて)
まとめ
だいたい以上で終了。
自分のわかってる範囲で、説明しきったはずです。
最後にソースを一式アップしときます。
ほんと、既存のものをいじっただけ&汚いソースですが、、、。
※動作させるには別途、以下が必要です。(ライブラリ)
Marilena
as3flickrlib
as3corelib
tweener
FlashCS3で、Main.asをドキュメントクラスに設定してお使い下さい。
・Marilenaシリーズ
Marilenaでアイドル(1)
Marilenaでアイドル(2)
2 Comments
Jump to comment form | comments rss [?] | trackback uri [?]