package { import flash.display.Sprite; import flash.media.Camera; import flash.media.Video; import flash.display.Bitmap; import flash.display.BitmapData; import flash.utils.ByteArray; import flash.events.Event; import flash.utils.Timer; import flash.events.TimerEvent; public class VideoProcessing extends Sprite { // Camera private var camera:Camera; // My Video private var videoOut:Video; // My Bitmapdata private var bmpd:BitmapData; // Bitmap private var bmp:Bitmap; private var timer:Timer; public function VideoProcessing() { trace("Starting"); // Setup the camera camera = Camera.getCamera(); // Video components videoOut = new Video(); // Set positions videoOut.x = 0; videoOut.y = 0; // Attach camera to our video videoOut.attachCamera(camera); addChild(videoOut); // Create the bitmapdata object bmpd = new BitmapData(320,240); // Create the bitmap image bmp = new Bitmap(bmpd); // Add it to the stage bmp.x = 0; bmp.y = 240; addChild(bmp); // Create timer timer = new Timer(10,0); timer.addEventListener(TimerEvent.TIMER, grabFrame); timer.start(); trace("done starting"); } private function grabFrame(e:TimerEvent):void { //trace("timer"); // Save the frame to the bitmapdata object bmpd.draw(videoOut); // Modify the bmpd //http://itp.nyu.edu/~dbo3/cgi-bin/ClassWiki.cgi?ICMVideo#removeStillBg for (var row:int=0; row<bmpd.height; row=row+1) { //for each row for(var col:int=0; col<bmpd.width; col=col+1) { //for each column //get the color of this pixels var pix:uint = bmpd.getPixel(col,row); var red:int = pix >> 16; var green:int = pix >> 8 & 0xff; var blue:int = pix & 0xff if (red > 50 && green > 50 && blue > 50) { bmpd.setPixel(col,row,0); } } } } } }