forked from: Ported from http://actionsnippet.com/?p=2820
/**
* Copyright pasier ( http://wonderfl.net/user/pasier )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/qVNC
*/
// forked from og2t's Ported from http://actionsnippet.com/?p=2820
package
{
import flash.filters.BlurFilter;
import flash.geom.ColorTransform;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.ActivityEvent;
import flash.events.Event;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.media.Camera;
import flash.media.Video;
public class FrameDiff extends Sprite
{
private var cam:Camera = Camera.getCamera();
private var sw:Number = 465;
private var sh:Number = 465;
private var pnt:Point = new Point(0,0);
private var rect:Rectangle = new Rectangle(0,0,sw,sh);
private var video:Video = new Video(sw, sh);
private var solouno = 0;
private var canvas:BitmapData = new BitmapData(sw, sh, false, 0x000000);
private var buffer:BitmapData = new BitmapData(sw, sh, false, 0x000000);
private var feed :BitmapData = new BitmapData(sw, sh, false, 0x000000);
private var prev :BitmapData = new BitmapData(sw, sh, false, 0x000000);
private var differ:BitmapData = new BitmapData(sw, sh, false, 0x000000);
private var frame:Bitmap = new Bitmap(canvas, "auto", true);
public function FrameDiff()
{
addChild(frame);
cam.setMode(sw, sh, 12);
video.attachCamera(cam);
cam.addEventListener(ActivityEvent.ACTIVITY, onActivityStart);
}
private function onActivityStart(evt:ActivityEvent):void
{
addEventListener(Event.ENTER_FRAME, onRun);
cam.removeEventListener(ActivityEvent.ACTIVITY, onActivityStart);
}
private function onRun(evt:Event):void
{
var blf:BlurFilter = new BlurFilter(8, 8, 3);
buffer.draw(video);
// feed.copyPixels(buffer, rect, pnt);
// buffer.draw(prev, null, null, BlendMode.DIFFERENCE);
// buffer.colorTransform(new Rectangle(0, 0, buffer.width, buffer.height), new ColorTransform(2,2,2,2) );
if ( solouno == 0 ) {
prev.draw(video);
solouno = 1;
}
// differ = BitmapData(buffer.compare(prev));
differ = BitmapData(prev.compare(buffer));
var mask:BitmapData = new BitmapData(buffer.width, buffer.height, true, 0);
const threshold:uint = 0xC0;
for (var i:int = 0; i < 3; i++)
mask.threshold(differ, rect, new Point(), ">", threshold << (i * 8), 0xFF000000, 0xFF << (i * 8));
mask.applyFilter(mask, rect, pnt, blf);
mask.threshold(mask, rect, new Point(), "<=", 0xCC000000);
mask.applyFilter(mask, rect, pnt, blf);
mask.threshold(mask, rect, new Point(), "<=", 0x66000000);
/*
mask.applyFilter(mask, rect, pnt, blf);
mask.applyFilter(mask, rect, pnt, blf);
mmask.threshold(mask, rect, new Point(), "<=", 0x66000000);mask.threshold(mask, rect, new Point(), "<=", 0x660);ask.threshold(mask, rect, new Point(), "<=", 0x66000000);
*/
canvas.draw(video);
canvas.draw(mask);
// canvas.copyPixels(mask, rect, pnt);
// canvas.threshold(canvas, new Rectangle(0, 0, buffer.width, buffer.height), new Point(0, 0), ">=", 0xFFCCCCCC);
// canvas.applyFilter(canvas, rect, pnt, blf);
// canvas.colorTransform(rect, new ColorTransform(5, 5, 5, 5));
// canvas.threshold(canvas, new Rectangle(0, 0, buffer.width, buffer.height), new Point(0, 0), "<", 0xFFCCCCCC);
// canvas.applyFilter(canvas, rect, pnt, blf);
// canvas.colorTransform(rect, new ColorTransform(5, 5, 5, 5));
// canvas.applyFilter(canvas, rect, pnt, blf);var mask:BitmapData = new BitmapData(dif.width, dif.height, true, 0);
// canvas.threshold(canvas, new Rectangle(0, 0, buffer.width, buffer.height), new Point(0, 0), "<", 0xFFCCCCCC);
}
}
}