完整代码:
package {
import flash.display.Sprite;
import flash.media.Camera;
import flash.media.Video;
import flash.events.Event;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Point;
import flash.filters.BitmapFilter;
import flash.filters.BlurFilter;
import flash.events.MouseEvent;
import flash.filters.ColorMatrixFilter;
public class Main2 extends Sprite {
private var Cam:Camera=new Camera();
private var video:Video = new Video(135,100);
private var video_map:BitmapData = new BitmapData(135,100);
private var aaa:BitmapData = new BitmapData(135,100);
private var print_map:Bitmap=new Bitmap();
private var filter:BitmapFilter = new BlurFilter(10,10,1);
private var filter2:ColorMatrixFilter=new ColorMatrixFilter();
private var _red:Array;
private var _green:Array;
private var _blue:Array;
private var matrix:Array = new Array();
public function Main2() {
this.addEventListener(Event.ADDED,addfinish);
matrix = matrix.concat([1,0,0,0,-50]);// red
matrix = matrix.concat([0,1,0,0,-50]);// green
matrix = matrix.concat([0,0,1,0,-50]);// blue
matrix = matrix.concat([0,0,0,1,0]);// alpha
filter2.matrix = matrix;
}
private function addfinish(e:Event) {
Cam.setMode(135,100,15);
Cam = Camera.getCamera();
video.x = 110;
video.y = 300;
video.filters = [filter2];
video.attachCamera(Cam);
this.addChild(video);
this.addEventListener(Event.ENTER_FRAME,onenterframe);
}
private function onenterframe(e:Event) {
findgreen();
}
private function findgreen() {
video_map.draw(video);
video_map.applyFilter(video_map,video_map.rect,new Point(),filter);
//模糊;
now_x = 0;
now_y = 0;
colorsum = 0;
for (var i:uint=0; i<135; i++) {
for (var j:uint=0; j<100; j++) {
var pointcolor:uint = video_map.getPixel(i,j);
var green:Number = (pointcolor>>8) % 256;
var red:Number = (pointcolor>>16) % 256;
var blue:Number = pointcolor % 256;
if (green * 0.85 < red || green * 0.85 < blue || green < 0x60) {
video_map.setPixel(i,j,0xff000000);
}
else {
video_map.setPixel(i,j,0xff00ff00);
}
}
}//检测绿色
print_map.bitmapData = video_map;
print_map.x = 340;
print_map.y = 300;
this.addChild(print_map);
}
}