分分钟学会【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
感谢分享! 感谢分享! 這個是很好的例子,學習一下。 真的吗 这是真的吗 542504578@qq.co 发表于 2019-2-25 09:53
这是真的吗
当然真的咯 非常棒非常棒非常棒非常棒 T大原创的吗 感谢分享!!