Flashのアクションスクリプトで動体検知

| | コメント(0) | トラックバック(0)

Flashのアクションスクリプトで動体検知を行うコードです。






FLAファイルはこちら



import flash.display.*;
import flash.geom.*;

cam = Camera.get();
cam.setMode(320,240,12);
vid._xscale = -200;
vid._x = 320;
vid.attachVideo(cam);

now = new BitmapData(320, 240);
before = new BitmapData(320, 240);
rect = new Rectangle(0, 0, 320, 240);
pt = new Point(0, 0);

onEnterFrame = function () {
	if (!cam.muted) {
		now.draw(vid,new Matrix(-2, 0, 0, 2, 320, 0));
		//BitmapData nowに対してビデオを描画。マトリックスを引数に渡して倍率を指定。
		//指定しないとデフォルトの160×120で渡される。
		//now.draw(vid,m);
		//nowとbeforeをdifferenceモードでブレンド。nowは今時点のビデオ映像。beforeは1フレーム前のビデオ映像。両者の差分を取得。
		now.draw(before,new Matrix(),new ColorTransform(),'difference');
		// BitmapData nowに対して、閾値を分析。111111以上なら、ffffffとして描画。
		now.threshold(now,rect,pt,'>',0xff111111,0xffffffff);
		//現時点のビデオ映像を取得。次フレームにて、"before"として使用。
		before.draw(vid,new Matrix(-2, 0, 0, 2, 320, 0));
		for (var i = 0; i<=7; i++) {
			for (var j = 0; j<=5; j++) {
				var targetMC:String = "impact"+(i+8*j).toString()
				var val = now.getPixel(this[targetMC]._x, this[targetMC]._y);
				if (val>10000000) {
					this[targetMC].gotoAndPlay(2);
				}
			}
		}
	}
};

//
var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(now,this.getNextHighestDepth());
mc._x = 320;

for (var i = 0; i<=7; i++) {
	for (var j = 0; j<=5; j++) {
		this.attachMovie("impact","impact"+(i+8*j).toString(),this.getNextHighestDepth(),{_x:40+i*30, _y:40+j*30});
	}
}


カメラで動体検知を行うインスタレーション作品を何回か作成したことがあるのですが、いつも悩ましいのが、背景のノイズまで拾ってしまうことです。
人通りが多い場所だと、背景で動く人まで拾ってしまう・・・

今までは、以下のような方法で回避しました。

・低めの位置から斜め上、天井を見る形でウェブカムを設置。作品の前に立つ人以外映らないようにする。
・人の立つ位置だけ拾えればOKという作品の場合は、天井から下向きにカメラを設置して、人の位置によって演出を変更。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Flashのアクションスクリプトで動体検知

このブログ記事に対するトラックバックURL: http://www.amatiny.com/mt/mt-tb.cgi/54

コメントする


画像の中に見える文字を入力してください。

ADs by Google

このブログ記事について

このページは、tamaが2010年2月 6日 22:08に書いたブログ記事です。

ひとつ前のブログ記事は「FlashのActionScriptでWebcamからの映像を動体検知」です。

次のブログ記事は「ActionScript3入門 覚え書き」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01