利用 AS3 实现人脸侦测的代码

人机交互是当前最热门的话题,从 Microsoft 的 Kinect 到 Google 的 G-Glass ,都有可能成为划时代的产品。但与此同时,请别忘了在我们的电脑里面,本身就有一个非常独特的人机交互接口,Webcam。

该 Demo 是利用 Webcam 作为图形接口,结合 jp.maaash 作为人脸侦测的 AS3 程序,利用 ActionScript 你可以继续开发出有趣的人机互动软件,譬如人脸锁,使用人数计算器,人脸控制显示器,又或者是可以通过人脸侦测自动 Logout 等等

当然还可以通过 Opencv 做二次开发,利用其作为脸部识别的工具,这样在 Website 里面将会有更多有趣的应用,当然也可以用在智能家居的远程控制端。这些都是可行的。


首先我们需要的工具是 maaash 的库,这个可以google到很多下载的,当然本文最后提供的下载也有


主要代码如下


[javascript]  view plain copy
  1. /** 
  2.  * Initializes the detector 
  3.  */  
  4. private function _initDetector () : void {  
  5.       
  6.     _detector = new ObjectDetector;  
  7.     _detector.options = getDetectorOptions( );  
  8.     _detector.loadHaarCascades( "face.zip" );  
  9.       
  10. }  

初始化face库,必须的。


[javascript]  view plain copy
  1. /** 
  2.  * Gets dector options 
  3.  */  
  4. private function getDetectorOptions () : ObjectDetectorOptions {  
  5.       
  6.     _options = new ObjectDetectorOptions;  
  7.     _options.min_size = 50;  
  8.     _options.startx = ObjectDetectorOptions.INVALID_POS;  
  9.     _options.starty = ObjectDetectorOptions.INVALID_POS;  
  10.     _options.endx = ObjectDetectorOptions.INVALID_POS;  
  11.     _options.endy = ObjectDetectorOptions.INVALID_POS;  
  12.     return _options;  
  13.       
  14. }  

再设置下要判断的内容,大小啦等等


[javascript]  view plain copy
  1. //timer for how often to detect  
  2. _detectionTimer = new Timer( __faceDetectInterval );  
  3. _detectionTimer.addEventListener( TimerEvent.TIMER , _detectionTimer_timer);  
  4. _detectionTimer.start();  
  5.   
  6. //initalize detector              
  7. _initDetector();  
  8.   
  9. //set up camera  
  10. _setupCamera();  
  11.   
  12. //hook up detection complete  
  13. _detector.addEventListener( ObjectDetectorEvent.DETECTION_COMPLETE , _detection_complete );  

做个timer,一个来输入bitmap数据,定义判断是否有face的event,setupCamera我就不post了,网上大把的。

[javascript]  view plain copy
  1. /** 
  2.  * Evalutates the webcam video for faces on a timer 
  3.  */       
  4. private function _detectionTimer_timer (event : TimerEvent) : void {  
  5.       
  6.     _bmpTarget = new Bitmap( new BitmapData( _video.width, _video.height, false ) );  
  7.     _bmpTarget.bitmapData.draw( _video );  
  8.     <span style="color:#FF0000;">_detector.detect( _bmpTarget );</span>  
  9.       
  10. }  
  11.   
  12. /** 
  13.  * Fired when a detection is complete 
  14.  */  
  15. private function _detection_complete (event : ObjectDetectorEvent) : void {  
  16.       
  17.     //no faces found  
  18.     <span style="color:#FF0000;">if(event.rects.length == 0) return;</span>  
  19.       
  20.     //stop the no-face timer and start back up again  
  21.     _noFaceTimer.stop( );  
  22.     _noFaceTimer.start();  
  23.       

就一句话就可以判断是否有face了。。接着就干你想干得事



感谢日本的 maaash 库,感谢OPENCV开源项目


代码可以在这里下载 ,里面也有演示程序

http://www.ubekar.com/project-facedetectionAS3.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值