PasteAll.org
		package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.media.Video;

import flash.net.URLRequest;


import gs.TweenLite;
import gs.easing.*;



import com.quasimondo.bitmapdata.CameraBitmap;

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.text.TextField;

import jp.maaash.ObjectDetection.ObjectDetector;
import jp.maaash.ObjectDetection.ObjectDetectorEvent;
import jp.maaash.ObjectDetection.ObjectDetectorOptions;

public class FaceDetector_Camera extends Sprite
{

private var detector :ObjectDetector;
private var options :ObjectDetectorOptions;

private var view :Sprite;
private var faceRectContainer :Sprite;
private var tf :TextField;

private var camera:CameraBitmap;
private var detectionMap:BitmapData;
private var drawMatrix:Matrix;
private var scaleFactor:int = 4;
private var w:int = 640;
private var h:int = 480;



public var Mask:Loader = new Loader();
public var oakley_th:Loader = new Loader();
public var oakley2_th:Loader = new Loader();
public var rayban_th:Loader = new Loader();
public var Mask_rabbits_th:Loader = new Loader();

public var MCoakley_th:MovieClip = new MovieClip();
public var MCoakley2_th:MovieClip = new MovieClip();
public var MCrayban_th:MovieClip = new MovieClip();
public var MCMask_rabbits_th:MovieClip = new MovieClip();




private var lastTimer:int = 0;


public function FaceDetector_Camera() {
initUI();
initDetector();




//Mask.load(new URLRequest("oakley2.png"));
Mask.load(new URLRequest("oakley.png"));
//Mask.load(new URLRequest("rayban.png"));
//Mask.load(new URLRequest("Mask_rabbits.png"));
addChild(Mask);

addChild(MCoakley_th);
addChild(MCoakley2_th);
addChild(MCrayban_th);
addChild(MCMask_rabbits_th);
}

private function initUI():void{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

view = new Sprite;
addChild(view);




camera = new CameraBitmap( w, h, 15 );
camera.addEventListener( Event.RENDER, cameraReadyHandler );
view.addChild( new Bitmap( camera.bitmapData ) );

detectionMap = new BitmapData( w / scaleFactor, h / scaleFactor, false, 0 );
drawMatrix = new Matrix( 1/ scaleFactor, 0, 0, 1 / scaleFactor );

faceRectContainer = new Sprite;
view.addChild( faceRectContainer );




oakley_th.load(new URLRequest("oakley_th.png"));
MCoakley_th.addChild(oakley_th);
MCoakley_th.x = 0;
MCoakley_th.y = stage.height - 64;
MCoakley_th.name = "oakley.png"
MCoakley_th.buttonMode = true
MCoakley_th.addEventListener(MouseEvent.CLICK, click);

oakley2_th.load(new URLRequest("oakley2_th.png"));
MCoakley2_th.addChild(oakley2_th);
MCoakley2_th.x = 68;
MCoakley2_th.y = stage.height - 64;
MCoakley2_th.name = "oakley2.png"
MCoakley2_th.buttonMode = true
MCoakley2_th.addEventListener(MouseEvent.CLICK, click);

rayban_th.load(new URLRequest("rayban_th.png"));
MCrayban_th.addChild(rayban_th);
MCrayban_th.x = 136
MCrayban_th.y = stage.height - 64;
MCrayban_th.name = "rayban.png"
MCrayban_th.buttonMode = true
MCrayban_th.addEventListener(MouseEvent.CLICK, click);

Mask_rabbits_th.load(new URLRequest("Mask_rabbits_th.png"));
MCMask_rabbits_th.addChild(Mask_rabbits_th);
MCMask_rabbits_th.x = 204
MCMask_rabbits_th.y = stage.height - 64;
MCMask_rabbits_th.name = "Mask_rabbits.png"
MCMask_rabbits_th.buttonMode = true
MCMask_rabbits_th.addEventListener(MouseEvent.CLICK, click);



}

private function click(e:MouseEvent):void {
Mask.unload();
Mask.load(new URLRequest(e.currentTarget.name));
trace("target = " + e.currentTarget.name);

}




private function cameraReadyHandler( event:Event ):void
{
detectionMap.draw(camera.bitmapData,drawMatrix,null,"normal",null,true);
detector.detect( detectionMap );
}

private function initDetector():void
{
detector = new ObjectDetector();

var options:ObjectDetectorOptions = new ObjectDetectorOptions();
options.min_size = 30;
detector.options = options;
detector.addEventListener(ObjectDetectorEvent.DETECTION_COMPLETE, detectionHandler );
}



private function detectionHandler( e :ObjectDetectorEvent ):void
{
var g :Graphics = faceRectContainer.graphics;
g.clear();
if( e.rects ){
g.lineStyle( 2 ); // black 2pix
e.rects.forEach( function( r :Rectangle, idx :int, arr :Array ) :void {
//g.drawRect( r.x * scaleFactor, r.y * scaleFactor, r.width * scaleFactor, r.height * scaleFactor );

var MaskSX:Number = (r.width * scaleFactor)*2
var MaskSY:Number = (r.height * scaleFactor)*2
var MaskX:Number = 0
var MaskY:Number = 0
var HeadCenterX:Number = ((r.width / 2 )* scaleFactor) + (r.x * scaleFactor)
var HeadCenterY:Number = ((r.height / 2 )* scaleFactor) + (r.y * scaleFactor)
MaskX = HeadCenterX - (MaskSX / 2)
MaskY = HeadCenterY - (MaskSY /2)-64
TweenLite.to(Mask, 0.5, { x:MaskX, y:MaskY, width:MaskSX, height:MaskSY} )
});
}

}




}
}

  1.                 package
  2. {
  3.         import flash.display.Loader;
  4.         import flash.display.MovieClip;
  5.         import flash.events.MouseEvent;
  6.         import flash.media.Video;
  7.        
  8.         import flash.net.URLRequest;
  9.        
  10.        
  11.         import gs.TweenLite;
  12.         import gs.easing.*;
  13.        
  14.                
  15.        
  16.         import com.quasimondo.bitmapdata.CameraBitmap;
  17.        
  18.         import flash.display.Bitmap;
  19.         import flash.display.BitmapData;
  20.         import flash.display.Graphics;
  21.         import flash.display.Sprite;
  22.         import flash.display.StageAlign;
  23.         import flash.display.StageScaleMode;
  24.         import flash.events.Event;
  25.         import flash.geom.Matrix;
  26.         import flash.geom.Rectangle;
  27.         import flash.text.TextField;
  28.        
  29.         import jp.maaash.ObjectDetection.ObjectDetector;
  30.         import jp.maaash.ObjectDetection.ObjectDetectorEvent;
  31.         import jp.maaash.ObjectDetection.ObjectDetectorOptions;
  32.        
  33.         public class FaceDetector_Camera extends Sprite
  34.         {
  35.                
  36.                 private var detector    :ObjectDetector;
  37.                 private var options     :ObjectDetectorOptions;
  38.                
  39.                 private var view :Sprite;
  40.                 private var faceRectContainer :Sprite;
  41.                 private var tf :TextField;
  42.                
  43.                 private var camera:CameraBitmap;
  44.                 private var detectionMap:BitmapData;
  45.                 private var drawMatrix:Matrix;
  46.                 private var scaleFactor:int = 4;
  47.                 private var w:int = 640;
  48.                 private var h:int = 480;
  49.                
  50.                
  51.                
  52.                 public var Mask:Loader = new Loader();
  53.                 public var oakley_th:Loader = new Loader();
  54.                 public var oakley2_th:Loader = new Loader();
  55.                 public var rayban_th:Loader = new Loader();
  56.                 public var Mask_rabbits_th:Loader = new Loader();
  57.                
  58.                 public var MCoakley_th:MovieClip = new MovieClip();
  59.                 public var MCoakley2_th:MovieClip = new MovieClip();
  60.                 public var MCrayban_th:MovieClip = new MovieClip();
  61.                 public var MCMask_rabbits_th:MovieClip = new MovieClip();
  62.                
  63.                
  64.                
  65.                
  66.                 private var lastTimer:int = 0;
  67.                
  68.  
  69.                 public function FaceDetector_Camera() {
  70.                         initUI();
  71.                         initDetector();
  72.                        
  73.                        
  74.                        
  75.                        
  76.                         //Mask.load(new URLRequest("oakley2.png"));  
  77.                         Mask.load(new URLRequest("oakley.png"));  
  78.                         //Mask.load(new URLRequest("rayban.png"));  
  79.                         //Mask.load(new URLRequest("Mask_rabbits.png"));  
  80.                         addChild(Mask);  
  81.                        
  82.                         addChild(MCoakley_th);
  83.                         addChild(MCoakley2_th);
  84.                         addChild(MCrayban_th);
  85.                         addChild(MCMask_rabbits_th);
  86.                 }
  87.  
  88.                 private function initUI():void{
  89.                         stage.scaleMode = StageScaleMode.NO_SCALE;
  90.                         stage.align = StageAlign.TOP_LEFT;
  91.                        
  92.                         view = new Sprite;
  93.                         addChild(view);
  94.  
  95.                        
  96.                        
  97.                        
  98.                         camera = new CameraBitmap( w, h, 15 );
  99.                         camera.addEventListener( Event.RENDER, cameraReadyHandler );
  100.                         view.addChild( new Bitmap( camera.bitmapData ) );
  101.                        
  102.                         detectionMap = new BitmapData( w / scaleFactor, h / scaleFactor, false, 0 );
  103.                         drawMatrix = new Matrix( 1/ scaleFactor, 0, 0, 1 / scaleFactor );
  104.                        
  105.                         faceRectContainer = new Sprite;
  106.                         view.addChild( faceRectContainer );
  107.                        
  108.                        
  109.                        
  110.                        
  111.                         oakley_th.load(new URLRequest("oakley_th.png"));  
  112.                         MCoakley_th.addChild(oakley_th);  
  113.                         MCoakley_th.x = 0;
  114.                         MCoakley_th.y = stage.height - 64;
  115.                         MCoakley_th.name = "oakley.png"
  116.                         MCoakley_th.buttonMode = true
  117.                         MCoakley_th.addEventListener(MouseEvent.CLICK, click);
  118.                        
  119.                         oakley2_th.load(new URLRequest("oakley2_th.png"));  
  120.                         MCoakley2_th.addChild(oakley2_th);  
  121.                         MCoakley2_th.x = 68;
  122.                         MCoakley2_th.y = stage.height - 64;
  123.                         MCoakley2_th.name = "oakley2.png"
  124.                         MCoakley2_th.buttonMode = true
  125.                         MCoakley2_th.addEventListener(MouseEvent.CLICK, click);
  126.                        
  127.                         rayban_th.load(new URLRequest("rayban_th.png"));  
  128.                         MCrayban_th.addChild(rayban_th);  
  129.                         MCrayban_th.x = 136
  130.                         MCrayban_th.y = stage.height - 64;
  131.                         MCrayban_th.name = "rayban.png"
  132.                         MCrayban_th.buttonMode = true
  133.                         MCrayban_th.addEventListener(MouseEvent.CLICK, click);
  134.                        
  135.                         Mask_rabbits_th.load(new URLRequest("Mask_rabbits_th.png"));  
  136.                         MCMask_rabbits_th.addChild(Mask_rabbits_th);  
  137.                         MCMask_rabbits_th.x = 204
  138.                         MCMask_rabbits_th.y = stage.height - 64;
  139.                         MCMask_rabbits_th.name = "Mask_rabbits.png"
  140.                         MCMask_rabbits_th.buttonMode = true
  141.                         MCMask_rabbits_th.addEventListener(MouseEvent.CLICK, click);
  142.                        
  143.                        
  144.                        
  145.                 }
  146.  
  147.                 private function click(e:MouseEvent):void {
  148.                         Mask.unload();
  149.                         Mask.load(new URLRequest(e.currentTarget.name));
  150.                         trace("target = " + e.currentTarget.name);
  151.                        
  152.                 }
  153.      
  154.  
  155.                
  156.                
  157.                 private function cameraReadyHandler( event:Event ):void
  158.                 {
  159.                         detectionMap.draw(camera.bitmapData,drawMatrix,null,"normal",null,true);
  160.                         detector.detect( detectionMap );
  161.                 }
  162.  
  163.                 private function initDetector():void
  164.                 {
  165.                         detector = new ObjectDetector();
  166.                        
  167.                         var options:ObjectDetectorOptions = new ObjectDetectorOptions();
  168.                         options.min_size  = 30;
  169.                         detector.options = options;
  170.                         detector.addEventListener(ObjectDetectorEvent.DETECTION_COMPLETE, detectionHandler );
  171.                 }
  172.                
  173.                
  174.                
  175.                 private function detectionHandler( e :ObjectDetectorEvent ):void
  176.                 {
  177.                         var g :Graphics = faceRectContainer.graphics;
  178.                         g.clear();
  179.                         if( e.rects ){
  180.                                 g.lineStyle( 2 );       // black 2pix
  181.                                 e.rects.forEach( function( r :Rectangle, idx :int, arr :Array ) :void {
  182.                                         //g.drawRect( r.x * scaleFactor, r.y * scaleFactor, r.width * scaleFactor, r.height * scaleFactor );
  183.                                        
  184.                                         var MaskSX:Number = (r.width * scaleFactor)*2
  185.                                         var MaskSY:Number = (r.height * scaleFactor)*2
  186.                                         var MaskX:Number = 0
  187.                                         var MaskY:Number = 0
  188.                                         var HeadCenterX:Number = ((r.width / 2 )* scaleFactor) + (r.x * scaleFactor)
  189.                                         var HeadCenterY:Number = ((r.height / 2 )* scaleFactor) + (r.y * scaleFactor)
  190.                                         MaskX = HeadCenterX - (MaskSX / 2)
  191.                                         MaskY = HeadCenterY - (MaskSY /2)-64
  192.                                         TweenLite.to(Mask, 0.5, { x:MaskX, y:MaskY, width:MaskSX, height:MaskSY} )
  193.                                 });
  194.                         }
  195.                        
  196.                 }
  197.  
  198.                
  199.  
  200.        
  201.         }
  202. }
  203.  
  204.                
go to heaven