Action Script 3.0 でwebカメラを動体検知に使う

前回はAS3でwebカメラを使うときのソースを載せましたが、
今回はそれを利用して簡単な動体検知を行うソースをメモ。

package {
import flash.display.Sprite;
import flash.media.Camera;
import flash.media.Video;
import flash.events.*;

public class Main extends Sprite {
public function Main() {

// constructor code

// カメラを取得
var camera = Camera.getCamera();

// ビデオ配置:サイズ指定
var video:Video = new Video( 400 , 320 );

// カメラ設定
video.attachCamera( camera);

// 表示
addChild( video );

//カメラの画質設定
camera.setMode(400,320,30);

// モーション検出の設定(検出の精度、ACTIVITY イベントが呼び出されるまでの時間)
camera.setMotionLevel(10,1000);

// モーション検知のイベントリスナー
camera.addEventListener( ActivityEvent.ACTIVITY , activityHandler );

function activityHandler( event:ActivityEvent ):void {
if( event.activating == true ){
trace( "モーション検知" );
trace("アクティビティレベル:" + camera.activityLevel);
}
}

}
}
}

前回から追加したのは、モーション検出の設定から下の記述です。
setMotionLevelで検出精度とタイムアウトまでの時間を設定します。
検出精度は0~100で小さいほど細かな動きも検出します。
タイムアウトまでの時間はデフォルトで 2000です。(単位:ミリ秒)

activityHandler ではモーション検知をすると「モーション検知」と出て、
変化量のアクティビティレベルが出るようになっています。

今はこれを利用して、人の動きに反応して変化するツリー映像の制作をしています。