FlashのActionScriptでWebcamからの映像を動体検知

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

ウェブカムからの映像に対して動体検知を行います。





FLAファイルはこちら


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

cam = Camera.get();
cam.setMode(320,240,12);
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);

//倍率操作用のマトリックス。Flashのデフォルトが160×120で、今回は320×240なので、2倍に設定。
m = new Matrix();
m.scale(2,2);

onEnterFrame = function () {
	if (!cam.muted) {
		//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,m);
		for (var i = 0; i<=8; i++) {
			var targetMC:String = "impact"+i.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 = 1; i<=8; i++) {
	this.attachMovie("impact","impact"+i.toString(),this.getNextHighestDepth(),{_x:10+i*30, _y:100});
}

トラックバック(0)

このブログ記事を参照しているブログ一覧: FlashのActionScriptでWebcamからの映像を動体検知

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

コメントする


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

ADs by Google

このブログ記事について

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

ひとつ前のブログ記事は「FlashのActionScriptでWebcamからの映像にぼかし処理」です。

次のブログ記事は「Flashのアクションスクリプトで動体検知」です。

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

Powered by Movable Type 4.01