TKCB 发表于 2018-11-5 17:41:36

分分钟学会【AS3人脸识别】~~~~~~~【猪八戒的嫦娥梦】

本帖最后由 TKCB 于 2020-2-4 11:08 编辑

TKCB网站
网址:www.tkcb.cc


【分分钟教程】——系列教程,共3篇分分钟学会【A星寻路】~~~~~~~【无上天君与梦瑶的传说】分分钟学会【AS3人脸识别】~~~~~~~【猪八戒的嫦娥梦】分分钟学会【Flash垃圾回收机制】~~~~~~~【死神的烦恼】



教程开始了!很多高手、大神都曾经讲过AS3人脸识别,但小弟不才,也想献上一篇AS3人脸识别的文章,以供观赏。本人系AS3菜鸟一枚,文章有不足之处,敬请包涵理解。
其实就是调用别人的API和识别库,但再简单的东西,如果没有被分享出来,也是复杂的!
很多人都说人脸识别有什么用,而且AS3也仅仅是检测出人脸并不能做出人脸比对~那这个功能又有什么用呢?
我来举几个例子: 1. QQ空间的右侧时常有一些好友的相册照片,照片中会出现一个框识别出人脸,问道这是谁?有没有印象呢? 2. 百度、搜搜街景地图里面所有的人脸都要做模糊处理,那么谁来做呢?我觉得不可能完全是人吧,或许全部都是程序计算进行的模糊处理。 3. 你电脑中有很多相片,你想回忆一下这些照片,但只想看一些有人的图片,怎么办?人脸识别或许能帮得上你!
既然人脸识别有点小用,那么教程便开始了。

猪八戒的嫦娥梦 序章,你还在看帖子?你妈叫你回家吃饭了。
第一章,突然你意识到了不对劲,哪里不对劲呢,原来你不再是你,你是无所不能的上帝,万能的上帝啊,你在电脑那头,我们再电脑这头。
第二章,有事起奏,无事退朝。报告上帝,你家后院养的那头猪成精了(他自称天蓬元帅猪八戒),他请求你赐给他一个美女,不然他就要将你与他的秘密告诉所有人,包括我们!
第三章,上帝大怒,尔敢!但无奈这个秘密实在不能公开啊!这时候或许大家都在脑子里脑补这个不可告人的秘密是什么。
第四章,西方的天界有一个不可告人的秘密,没人女人!怎么办呢,猪八戒又要美女~~于是作为上帝的你只要拉下脸皮向东方天庭求助,借嫦娥一用,当然上帝不可能告诉玉帝实情了,各种遮天蔽日的手段无所不用其极。
第五章,上帝想出了一个办法,就是蒙着猪八戒的双眼,让他距离八位嫦娥(只有一位是真嫦娥,其他都是妖怪变化出来的假嫦娥)100米,然后让他选,他选中那个就是那个了,不准后悔,限时一炷香的时间。
第六章,猪八戒想了想同意了,因为他也不愿将这个不可告人的秘密随意公开。
第七章,选嫦娥开始了,猪八戒先放出神识想直接窥探,可没想到上帝居然屏蔽了他的神识!!!怎么办呢?怎么办呢?猪八戒万分焦急!!!
第八章,猪八戒摸了摸口袋,超声波探测器,有办法了,猪八戒掏出了超声波探测器,释放出了上帝也无法左右的超声波,只有短短几毫秒,一张清晰的图像便出现在了八戒的脑海中了。
第九章,人脸识别,只要找出是人的那张脸就可以了,其他都是妖怪!八戒用他高达2.50的智商不断分析识别着。
第十章,八戒消失了,嫦娥消失了,西方天界又恢复了一片平静,上帝和玉帝之间似乎有一些不同寻常的事情发生,但对于我们常人却没有影响。
第十一章(妖界传说),猪王猪八戒带着娇妻嫦娥,以及后宫佳丽三千万隐居于桃花源,过着幸福和谐的生活,桃花源是一个传说,谁也不知道这个地方在哪里。
第十一章(天界传说),自从嫦娥消失后,玉帝与上帝之间往来频繁,似乎他们成为了好基友。但在这两位大帝的打压之下,这种言论很快变成了一个传说。
第十一章(基情天下),男欢女爱的时代结束了,基友的天下来临了,但随着人口的下降,人类灭绝了(2012只是预言的刚开始)。

程序员猪八戒 人间有一个程序员,他叫做猪八戒,他精通AS3人脸识别,他听闻了天界猪八戒的传说,很感兴趣,于是他准备用程序模拟一下人脸识别。 下面是程序方面的知识(相对枯燥,耐心开下去吧):
提供的 API 有 deng 和 jp 两个包,以及face人脸识别库。
deng 包里面是ZIP压缩包相关的代码类,jp 包里面是关于人脸识别相关的代码类。
face压缩文件里面存放着人脸识别相关的库数据

代码调用流程大致如下:
1. 创建人脸识别类对象(ObjectDetector);
2. 设置人脸识别识别选项(ObjectDetectorOptions);
3. 加载人脸识别库(face.zip);
4. 设置人脸识别完成侦听(ObjectDetectorEvent.DETECTION_COMPLETE);
5. 调用人脸识别方法(ObjectDetector.detect());
6. 获取人脸识别完成的结果(event.rects(方框对象数组));
7. 显示方框。

文档类(调用)代码如下:
/*
* 修 改 者:TKCB
* 作者信息:身高(167cm+);体重(60kg±);年龄(90后);籍贯(陕西西安);星座(双鱼座);血型(O型);人生格言(The king come back.)。
* 交流学习:加QQ群(96759336),群里有无数主城、架构、妹子、LOL战友,欢迎交流讨论。
* 联系方式:QQ(2414268040);E-mail(tkcb@qq.com);手机(15029932353)。
*/

package
{
      import flash.display.Graphics;
      import flash.display.BitmapData;
      import flash.display.Bitmap;
      import flash.display.MovieClip;
      import flash.display.Sprite;
      
      import flash.events.TimerEvent;
      import flash.events.Event;
      
      import flash.utils.Timer;
      
      import flash.media.Video;
      import flash.media.Camera;
      
      import jp.maaash.ObjectDetection.ObjectDetector;      
      import jp.maaash.ObjectDetection.ObjectDetectorEvent;      
      import jp.maaash.ObjectDetection.ObjectDetectorOptions;      
      
      /**
         * ...
         */
      public class WebcamFaceDetector extends MovieClip
      {
                //************************ ************************* 属  性 ******************** *********** *** **////
                /** 人脸识别对象 */
                private var detector : ObjectDetector;
               
                /** 人脸识别对象选项(模式) */
                private var options : ObjectDetectorOptions;
               
                /** 当前用于人脸识别的图像 */
                private var bmpTarget : Bitmap;
               
               
                /** 人脸识别,矩形框的颜色 */
                private var rectColor : int = 0xFF0000;
               
                /** 人脸识别,矩形框的数组 */
                private var rects : Array;
               
               
               
                //************************ ************************* 构造函数 ******************** *********** *** **////
                /**
               * 构造函数
               */
                public function WebcamFaceDetector ()
                {
                        // 人脸识别,矩形框的数组
                        rects = new Array();
                        
                        this.addEventListener( Event.ADDED_TO_STAGE, addedToStage );
                }
               
               
                //************************ ************************* 方  法 ******************** *********** *** **////
                /** 对象被添加到舞台 */
                private function addedToStage ( eve:Event ) : void
                {
                        this.removeEventListener( Event.ADDED_TO_STAGE, addedToStage );
                        
                        // 初始化人脸识别器
                        _initDetector();
                        
                        // 人脸识别
                        _detection();
                }
               
                /** 初始化人脸识别器 */
                private function _initDetector () : void
                {
                        detector = new ObjectDetector();
                        // 设置人脸识别识别选项(模式)
                        options = new ObjectDetectorOptions();
                        options.min_size = 50;
                        options.startx = ObjectDetectorOptions.INVALID_POS;
                        options.starty = ObjectDetectorOptions.INVALID_POS;
                        options.endx = ObjectDetectorOptions.INVALID_POS;
                        options.endy = ObjectDetectorOptions.INVALID_POS;
                        detector.options = options;
                        // 加载人脸识别库
                        detector.loadHaarCascades( "face.zip" );
                        // 设置人脸识别完成侦听
                        detector.addEventListener( ObjectDetectorEvent.DETECTION_COMPLETE , detectionComplete );
                }
               
                /** 人脸识别 */               
                private function _detection () : void
                {
                        bmpTarget = new Bitmap( new BitmapData( rlsbMC.width, rlsbMC.height ) );
                        bmpTarget.bitmapData.draw( rlsbMC );
                        detector.detect( bmpTarget );
                }
               
                /** 识别完成,用矩形框将识别到的人脸显示出来 */
                private function detectionComplete ( eve : ObjectDetectorEvent ) : void
                {
                        // 如果没有识别到人脸,则结束函数,不显示任何矩形框
                        // 根据lenght属性可以知道,该识别系统可以识别多个人脸
                        if ( eve.rects.length == 0 )
                        {
                              tf.text = "没有识别到人脸!!!";
                              return;
                        }
                        
                        tf.text = "识别到了 " + eve.rects.length + " 个人脸。";
                        // 便利获取到的人脸数组
                        for ( var i : int = 0; i < eve.rects.length ; i++ )
                        {
                              // 如果发现人脸则创建矩形
                              rects[ i ] = createRect();
                              rects[ i ].x = eve.rects[ i ].x + rlsbMC.x;
                              rects[ i ].y = eve.rects[ i ].y + rlsbMC.y;
                              rects[ i ].width = eve.rects[ i ].width;
                              rects[ i ].height = eve.rects[ i ].height;
                              addChild( rects[ i ] );
                        }
                }
               
                /** 创建人脸识别框 */
                private function createRect () : Sprite
                {
                        var rectContainer : Sprite = new Sprite();
                        rectContainer.graphics.lineStyle( 2 , rectColor , 1 );
                        rectContainer.graphics.beginFill( 0x000000, 0 );
                        rectContainer.graphics.drawRect( 0, 0, 100, 100 );
                        
                        return rectContainer;
                }
               
      }
}


结束语
代码里的注释写的还算详细,基础好点的,看了文章,再看代码估计都能懂个七七八八了。

愿大家越来越厉害,愿我早已脱离菜鸟的头衔~~~我是一只小小鸟,怎么飞也飞不高!!!

愿大家都能找到属于自己的嫦娥~~~送所有程序猿~~~


源文件奉上:
**** Hidden Message *****


免费是最昂贵的
银子还是要收的,因为 “免费的东西最昂贵” ,请深刻理解这句话的含义!!!


广告QQ(TKCB):2414268040(欢迎和我聊天交流,有朋自远方来不亦说乎)QQ群:96759336(AS3殿堂之路,Flash Animate AS3 AIR 技术交流)QQ群:705730359(H5天路历程,HTML5 CSS3 JaveScript技术交流)QQ群:463560360(King系列软件分享交流,TKCB 出品的 King 系列软件分享、使用、交流、反馈等)TKCB网站:www.tkcb.cc官方技术论坛:www.11ria.com

ylw 发表于 2018-11-5 18:41:06

感谢分享!

冥夜一世 发表于 2018-11-6 09:42:31

感谢分享!

huiker 发表于 2018-11-29 02:15:34

這個是很好的例子,學習一下。

wwttcc 发表于 2018-11-30 08:19:49

真的吗                              

542504578@qq.co 发表于 2019-2-25 09:53:58

这是真的吗

TKCB 发表于 2019-2-25 14:38:33

542504578@qq.co 发表于 2019-2-25 09:53
这是真的吗

当然真的咯

我是你大爷 发表于 2019-2-25 18:33:46

非常棒非常棒非常棒非常棒

sunarm_jk 发表于 2019-2-25 21:01:55

T大原创的吗

雪原xy 发表于 2019-2-25 21:52:46

感谢分享!!
页: [1] 2 3 4
查看完整版本: 分分钟学会【AS3人脸识别】~~~~~~~【猪八戒的嫦娥梦】

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)