flash摄像头的使用
来源:互联网 发布:iphone7plus在线软件 编辑:程序博客网 时间:2024/05/01 18:06
//摄像头的使用 具体代码
import flash.display.Bitmap;import flash.display.BitmapData;import flash.geom.Rectangle;import flash.geom.Point;var my_Camera:Camera;var my_Video:Video;var my_BitmapDataBefore:BitmapData;var my_BitmapDataCurrent:BitmapData;var bitmapData:BitmapData;var rectOne:Rectangle;var rectTwo:Rectangle;var time:Timer=new Timer(100,0); time.addEventListener(TimerEvent.TIMER,comparisonOnTime); //矩形框 rectOne = new Rectangle(MovieClip(this.parent).jx1.x,MovieClip(this.parent).jx1.y,MovieClip(this.parent).jx1.width,MovieClip(this.parent).jx1.height);rectTwo = new Rectangle(MovieClip(this.parent).jx2.x,MovieClip(this.parent).jx2.y,MovieClip(this.parent).jx2.width,MovieClip(this.parent).jx2.height);var rectOne1:Rectangle = new Rectangle(rectOne.x,rectOne.y,rectOne.width/2,rectOne.height/2);var rectOne2:Rectangle = new Rectangle(rectOne.x+rectOne.width/2,rectOne.y,rectOne.width/2,rectOne.height/2);var rectOne3:Rectangle = new Rectangle(rectOne.x,rectOne.y+rectOne.height/2,rectOne.width/2,rectOne.height/2);var rectOne4:Rectangle = new Rectangle(rectOne.x+rectOne.width/2,rectOne.y+rectOne.height/2,rectOne.width/2,rectOne.height/2);var rectTwo1:Rectangle = new Rectangle(rectTwo.x,rectTwo.y,rectTwo.width/2,rectTwo.height/2);var rectTwo2:Rectangle = new Rectangle(rectTwo.x+rectTwo.width/2,rectTwo.y,rectTwo.width/2,rectTwo.height/2);var rectTwo3:Rectangle = new Rectangle(rectTwo.x,rectTwo.y+rectTwo.height/2,rectTwo.width/2,rectTwo.height/2);var rectTwo4:Rectangle = new Rectangle(rectTwo.x+rectTwo.width/2,rectTwo.y+rectTwo.height/2,rectTwo.width/2,rectTwo.height/2);//初始化摄像头my_Camera= Camera.getCamera();if (my_Camera != null) { my_Camera.addEventListener(StatusEvent.STATUS,loadCamera); my_Video = new Video(400,300); my_Video.clear(); my_Video.attachCamera(my_Camera); my_BitmapDataBefore = new BitmapData(my_Camera.width,my_Camera.height,true,0); my_BitmapDataBefore.draw(my_Video)} else { trace("错误:找不到可用的摄像头");}//显示摄像头中的内容function loadCamera(e:StatusEvent):void { my_Video.x = 0; my_Video.y = 0; my_Camera.setMode(my_Video.width,my_Video.height,24); addChild(my_Video); time.start();}function comparisonOnTime(e:TimerEvent){ doClearance(); my_BitmapDataCurrent = getCurrentBitmapData(); //显示比较图片 (直接使用比较,效率比先赋值再使用要高一倍) if(!isAlickForTowBitmapData(my_BitmapDataBefore,my_BitmapDataCurrent,rectOne1)||!isAlickForTowBitmapData(my_BitmapDataBefore,my_BitmapDataCurrent,rectOne2)||!isAlickForTowBitmapData(my_BitmapDataBefore,my_BitmapDataCurrent,rectOne3)||!isAlickForTowBitmapData(my_BitmapDataBefore,my_BitmapDataCurrent,rectOne4)){//不像似则表示发生了移动 MovieClip(MovieClip(this.parent).parent).block_1.visible=true ; }else{MovieClip(MovieClip(this.parent).parent).block_1.visible= false;} if(!isAlickForTowBitmapData(my_BitmapDataBefore,my_BitmapDataCurrent,rectTwo1)||!isAlickForTowBitmapData(my_BitmapDataBefore,my_BitmapDataCurrent,rectTwo2)||!isAlickForTowBitmapData(my_BitmapDataBefore,my_BitmapDataCurrent,rectTwo3)||!isAlickForTowBitmapData(my_BitmapDataBefore,my_BitmapDataCurrent,rectTwo4)){ MovieClip(MovieClip(this.parent).parent).block_2.visible=true ; }else{MovieClip(MovieClip(this.parent).parent).block_2.visible= false;} my_BitmapDataBefore = my_BitmapDataCurrent.clone(); }//捕获当前照片function getCurrentBitmapData():BitmapData { if(!bitmapData){ bitmapData = new BitmapData(my_Camera.width,my_Camera.height,true,0);} bitmapData.draw(my_Video); if(bitmapData){return bitmapData;} return my_BitmapDataBefore;}//比较两幅图指定位置是否相似function isAlickForTowBitmapData(firstImage:BitmapData, lastImage:BitmapData,rect:Rectangle):Boolean{ var rect:Rectangle = rect; var pt:Point = new Point(0, 0); var bdFirst:BitmapData = new BitmapData(rect.width,rect.height); bdFirst.copyPixels(firstImage, rect, pt); var bdLast:BitmapData = new BitmapData(rect.width,rect.height); bdLast.copyPixels(lastImage, rect, pt); if(bdFirst.compare(bdLast)){ var diffBmpData:BitmapData = bdFirst.compare(bdLast) as BitmapData; var alikeCount:int = 0; var allCount:int = 0; var w:uint = diffBmpData.rect.width; var h:uint = diffBmpData.rect.height; for(var i:int=0;i<w-1;i=i+2){ for(var j:int=0;j<h-1;j=j+2){ if(diffBmpData.getPixel(i,j).toString(16)=="0"){alikeCount++;} allCount++; } } diffBmpData.dispose(); }// 释放内存 bdFirst.dispose(); bdLast.dispose();//trace("相似度数"+allCount); if(alikeCount/allCount>MovieClip(this.parent).slider.getSliderValue()){return true;} else{return false;}} function doClearance() : void { try{ new LocalConnection().connect("foo"); new LocalConnection().connect("foo"); }catch(error : Error){} }
0 0
- flash摄像头的使用
- 使用flash摄像头拍照的简单实践
- 关于用Dshow写的虚拟摄像头无法在flash中使用的问题
- flash as3 对摄像头颜色的检测
- Android 摄像头的使用
- opencv3-摄像头的使用
- Flash 8 摄像头拍照
- Flex(flash)检测摄像头的3种状态
- Flex(flash)检测摄像头的3种状态
- 【SOCLAB】网络摄像头的使用
- Raspberry pi摄像头的使用
- C#关于摄像头的使用
- Flash组件的使用
- nand flash 的使用
- atmega8 Flash的使用
- Flash获取监控摄像头信号
- 摄像头使用
- 使用摄像头进行拍照的步骤
- java对象json字符串互转
- CAD二次开发 选择集使用
- Java线程阻塞与中断
- Android--点击视图外部,隐藏键盘
- laravel框架 composer安装 及简单的增、删、改、查(分页)
- flash摄像头的使用
- Python自学之计算
- Linux下C语言学习之路——(0)学习路线的选择
- Java线程间的通信
- 两张图片相似度比较
- Python自学之String
- Pojo
- 在navicat for mysql中建立触发器
- 观察者模式