人脸识别打卡 ,一张图归纳

demo:https://github.com/dunitian/DNTLive/tree/master/Software/WaterMarkAPP/LoTWaterAPP

demo:https://github.com/dunitian/DNTLive/tree/master/Software/WaterMarkAPP/LoTWaterAPP

说到这厮脸识别,还真有点缘分。记得逆天在此以前在学生时代加入立异大赛的时候,标题就是人脸识别打卡 化解旁人替人打卡的主题素材,想想看,要是用微软的faceapi那还不是很轻便完毕的?

谈到这厮脸识别,还真有点缘分。记得逆天在此之前在学生时代加入创新大赛的时候,题目正是人脸识别打卡缓和外人替人打卡的难点,想想看,假设用微软的faceapi那还不是很轻巧落成的?

亿万先生官网 1

亿万先生官网 2

好了,不聊天了,上次概述了下水印情缘:http://www.cnblogs.com/dunitian/p/6232074.html

好了,不聊天了,上次概述了下行印情缘:http://www.cnblogs.com/dunitian/p/6232074.html

一张图回顾:

一张图回顾:

亿万先生官网 3

亿万先生官网 4

额,这一次先看下效果,然后推广一些付出进度中的知识点,然后介绍一下微软的FaceAPI

额,本次先看下效果,然后推广一些支出进度中的知识点,然后介绍一下微软的FaceAPI

==》原本的成效照旧在,非人脸识别,请在信息框中选用否

==》原来的效用依旧在,非人脸识别,请在音信框中甄选否

亿万先生官网 5

亿万先生官网 6

不必要人脸识其余就选否,各类月Api次数是少数的

不要求人脸识别的就选否,每一个月Api次数是轻巧的

亿万先生官网 7

亿万先生官网 8

儒生成缩略图:(前期可以增进缩略比例的调剂)

文人成缩略图:(前期能够增进缩略比例的调养)

亿万先生官网 9

亿万先生官网 10

异步的主意初始职业了

异步的章程初叶工业作了

亿万先生官网 11

亿万先生官网 12

好了后头会通报你(很四人用异步的方式不会捕获至极和实现后的打招呼,一会自个儿稍稍说一下)

好了后来会打招呼你(很几个人用异步的秘籍不会捕获卓殊和实现后的文告,一会自己稍稍说一下)

亿万先生官网 13

亿万先生官网 14

探访人脸,无需付费版的精度这几个程度已经很好了(二13个脸就2张有点相对误差),假设你把她用来人脸打卡,完全能够允许的嘛,没识别出来再试一试就ok了

探望人脸,无偿版的精度这几个境界已经很好了(二11个脸就二张有点舍入误差),假使你把他用来人脸打卡,完全能够允许的呗,没识别出来再试壹试就ok了

亿万先生官网 15

亿万先生官网 16

点开一张看看,其实照旧挺显明的(网络的face
api差不离都是对正脸识别比较好,侧脸就差繁多,微软的这几个算不错的了【在此以前微软不是有七款小游戏相当的红嘛,正是用的人脸识别】)

点开一张看看,其实依然挺明显的(网络的face
api恐怕都以对正脸识别相比较好,侧脸就差繁多,微软的那些算不错的了【从前微软不是有七款小游戏很红嘛,正是用的人脸识别】)

亿万先生官网 17

亿万先生官网 18

上边演示部分了结了,大家进去技艺钻探环节(技艺有啥不到位的大概还有哪些越来越好方案的。还望同志们提点一下,小子勇于接受商量)

地方演示部分截至了,我们进入技艺切磋环节(才干有如何不完了的依然还有哪些更加好方案的。还望同志们提点一下,小子勇于接受争论)

先说下,设置超时时间,相当管理

先说下,设置超时时间,非凡管理

亿万先生官网 19

亿万先生官网 20

完毕后的打招呼其实也很简短:

成功后的照应其实也很简短:

亿万先生官网 21

亿万先生官网 22

有人也许会说:Task.Factory.StartNew 和 Task.Run
同样不?Run正是第三种办法,只可是自动增加了有的暗许参数

有人恐怕会说:Task.Factory.StartNew 和 Task.Run
同样不?Run便是率先种艺术,只可是自动增加了有的暗许参数

再说下Magick,从前说了水印的用法:http://www.cnblogs.com/dunitian/p/5895133.html

再说下Magick,从前说了水印的用法:http://www.cnblogs.com/dunitian/p/5895133.html

这一次基本上用法全了,缩略图,裁剪,水印 

这一次基本上用法全了,缩略图,裁剪,水印

剪裁官方文书档案未有说,笔者是基于指令逆推的==》写了个demo:https://github.com/dunitian/TempCode/tree/master/2016-12-26/MagickTest

剪裁官方文书档案未有说,我是依附指令逆推的==》写了个demo:https://github.com/dunitian/TempCode/tree/master/2016-12-26/MagickTest

亿万先生官网 23

亿万先生官网 24

亿万先生官网 25

亿万先生官网 26

转移缩略图很简短:

变换缩略图非常粗略:

亿万先生官网 27

亿万先生官网 28

 水印官方写的很详细:

水印官方写的很详细:

亿万先生官网 29

亿万先生官网 30



转眼随意那个了,说说人脸识别,在此以前不了然官方有sdk,自个儿包裹了。一同探访吧,有利于掌握官方sdk:

须臾间不论是这一个了,说说人脸识别,在此之前不明了官方有sdk,本身包裹了。一同探访吧,有利于驾驭官方sdk:

亿万先生官网 31

亿万先生官网 32

首先定义了一人脸识其余专用非常类:(别问笔者为何不直接用Exception,不明白百度下~)

亿万先生官网,率先定义了一位脸识别的专用极度类:(别问作者干什么不直接用Exception,不知情百度下~)

亿万先生官网 33

亿万先生官网 34

下边举办场景复原,为啥那样封装,大多人不写方法,直接贴代码,看的轻巧晕

下边实行场景复原,为啥如此封装,很五个人不写方法,直接贴代码,看的轻便晕

下一场是Model,我那边没高兴封装脸部关键点,必要决定整个(小编只要面部矩阵),假使是Face++就得自身算了

下一场是Model,小编那边没快意封装脸部关键点,供给决定一切,借使是Face++就得自个儿算了

微软回到结果是其1:

微软回到结果是其1:

亿万先生官网 35

亿万先生官网 36

那model自然就得那样封装了

那model自然就得如此封装了

亿万先生官网 37

亿万先生官网 38

留神管理一下各种字段的负数场地(后边计算是唯恐为负的)

留意管理一下每一个字段的负数情形(前边计算是唯恐为负的)

亿万先生官网 39

亿万先生官网 40

亿万先生官网 41

亿万先生官网 42

下边正是宗旨代码:(小编那边分了网页UENVISIONL和本地图片路线,SDK好像统一用流的措施)

下边正是主题代码:(小编那边分了网页UTiggoL和本土图片路线,SDK好像统壹用流的法子)

为啥本人分二种情景,看那两张图就能领悟:

何以自个儿分二种状态,看那两张图就能理解:

亿万先生官网 43

亿万先生官网 44

亿万先生官网 45

亿万先生官网 46

基于要求开始展览打包:

依据必要开始展览打包:

亿万先生官网 47

亿万先生官网 48

看代码: 

看代码:

亿万先生官网 49

亿万先生官网 50

 上面便是响应了

上边正是响应了

亿万先生官网 51

亿万先生官网 52

亿万先生官网 53

亿万先生官网 54

亿万先生官网 55

亿万先生官网 56

太多,小编就不贴了,看对应代码:(微软的唤醒是英文的,小编得轻巧封装下)

太多,笔者就不贴了,看对应代码:(微软的唤醒是英文的,作者得轻便封装下)

亿万先生官网 57

亿万先生官网 58

亿万先生官网 59

亿万先生官网 60

 调用就绝不说了吗:await FaceHelper.GetFaceModelList(path)
or FaceHelper.GetFaceModelList(path).Result

调用就不用说了啊:awaitFaceHelper.GetFaceModelList
orFaceHelper.GetFaceModelList.Result

微软的api很简单,eg:

微软的api很简单,eg:

亿万先生官网 61

亿万先生官网 62

亿万先生官网 63

亿万先生官网 64

 private static async Task<IEnumerable<Face>> UploadAndDetectFaces(string imageFilePath)
        {
            try
            {
                using (Stream imageFileStream = File.OpenRead(imageFilePath))
                {
                    var faceClient = new FaceServiceClient(FaceHelper.GetAPIKey());
                    return await faceClient.DetectAsync(imageFileStream);
                }
            }
            catch (FaceAPIException ex)
            {
                throw ex;
            }
        }
 private static async Task<IEnumerable<Face>> UploadAndDetectFaces(string imageFilePath)        {            try            {                using (Stream imageFileStream = File.OpenRead(imageFilePath))                {                    var faceClient = new FaceServiceClient(FaceHelper.GetAPIKey;                    return await faceClient.DetectAsync(imageFileStream);                }            }            catch (FaceAPIException ex)            {                throw ex;            }        }

  

  

 先那样呢,WPF不是很擅长,凑合着用呢~~

先这么吗,WPF不是很善于,凑合着用吗~~