游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2332

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 4035|回复: 36

[沐巳点] 【Unity3d】百度AI人脸识别实例——描绘人脸特征点

[复制链接]  [移动端链接]
排名
4523
昨日变化
3

15

主题

51

帖子

609

积分

Rank: 9Rank: 9Rank: 9

UID
208032
好友
1
蛮牛币
1138
威望
0
注册时间
2017-2-23
在线时间
203 小时
最后登录
2018-3-12
发表于 2017-10-16 16:13:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
上一篇文章介绍了在中使用百度AI人脸识别功能:http://www.manew.com/thread-109068-1-1.html,本文将用一个描绘人脸特征点的程序来讲解对SDK的调用。

首先我们需要搭建一个简单的场景:一个开始测试的按钮,一张供测试和绘制特征点的图片,和显示debug信息的文字框:




然后新建一个叫FaceDetector的脚本,定义变量:
[C#] 纯文本查看 复制代码
public Text debugInfo;                            // 显示debug信息
public RawImage portrait;                         // 显示图片
public Texture2D texture;                         // 用以描绘特征点的图片

private Face client;                              // 用来调用百度AI接口
private byte[] image;                             // 检测的图像数据
private Dictionary<string, object> options;       // 返回的数据
private JObject result;                           // 接收返回的结果



在Awake方法中初始化数据:
[C#] 纯文本查看 复制代码
private void Awake()
{
    System.Net.ServicePointManager.ServerCertificateValidationCallback += 
            delegate (object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
                    System.Security.Cryptography.X509Certificates.X509Chain chain,
                    System.Net.Security.SslPolicyErrors sslPolicyErrors)
                    {
                        return true;           // always accept
                    };

    client = new Face("", "");                 // 此处填写自己申请的key
    var path = Application.dataPath + "/BaiduAI/1.jpg";
    image = File.ReadAllBytes(path);
    options = new Dictionary<string, object>()
    {
        {"face_fields", "beauty,age,expression,gender,landmark" }
    };
}



然后定义一个DetectAndDraw方法,调用百度AI接口并且根据返回的landmark描绘人脸特征点:
[C#] 纯文本查看 复制代码
public void DetectAndDraw()
{
    result = client.FaceDetect(image, options);                   // 调用API接口
    debugInfo.text = result.ToString();                           // 显示debug信息

    // 复制原图信息
    var width = texture.width;
    var height = texture.height;
    var mask = new Texture2D(width, height);
    for (int i = 0; i < width; i++)
    {
        for (int j = 0; j < height; j++)
            mask.SetPixel(i, j, texture.GetPixel(i, j));
    }

    // 根据返回的landmark描绘特征点
    var r = result["result"];
    foreach(var value in r)
    {
        var landmarks = value["landmark72"];
        foreach(var lm in landmarks)
        {
            var x = int.Parse(lm["x"].ToString());
            var y = height - int.Parse(lm["y"].ToString());
            // 绘制点为3个像素点单位的正方形
            // 这里其实应该保证绘制的像素点位置在我们检测图片的像素点范围内
            for(int i = x - 1; i <= x + 1; i++)
            {
                for (int j = y - 1; j <= y + 1; j++)
                {
                    mask.SetPixel(i, j, Color.red);
                }
            }
        }
    }
    // 显示描绘特征点之后的图像
    mask.Apply();
    portrait.texture = mask;
}



给Button的OnClick事件添加DetectAndDraw方法,运行并点击Button,就能绘制出人脸特征点了。


注意如果要替换检测的图片,需要点击RawImage的Set Native Size确保RawImage的大小与检测图片大小一致,当然也可以在代码中根据两张图的比例来计算确保特征点对应。这里只介绍最简单的方法。

运行程序前请先打开FaceDetector.cs脚本,在Awake方法中的client = new Face(“”, “”)处(line 33)添加自己的key。

工程版本Unity2017.1.0f3。

项目地址.txt (49 Bytes, 下载次数: 275)

点评

感谢分享  发表于 2017-10-25 09:31

回复

使用道具 举报

7日久生情
2730/5000
排名
2917
昨日变化
13

2

主题

1841

帖子

2730

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
241666
好友
0
蛮牛币
10455
威望
0
注册时间
2017-9-6
在线时间
409 小时
最后登录
2018-10-21
发表于 2017-10-17 08:19:08 来自Mobile--- | 显示全部楼层
感谢分享

回复

使用道具 举报

排名
3
昨日变化

6878

主题

7402

帖子

2万

积分

Rank: 16

UID
1231
好友
185
蛮牛币
9883
威望
30
注册时间
2013-7-29
在线时间
3535 小时
最后登录
2018-10-18

社区QQ达人活力之星原创精华达人突出贡献奖财富之证游戏蛮牛QQ群会员蛮牛妹VIP

发表于 2017-10-17 10:06:31 | 显示全部楼层
道理我都懂 为什么用我老婆照片当示例图?
[发帖际遇]: 清风 在论坛发帖时没有注意,被小偷偷去了 2 蛮牛币. 幸运榜 / 衰神榜

跟我念“站长妹纸萌萌哒!”我说站长,你说YO!爱你们么么哒~
回复 支持 1 反对 0

使用道具 举报

3偶尔光临
188/300
排名
9886
昨日变化

0

主题

27

帖子

188

积分

Rank: 3Rank: 3Rank: 3

UID
245707
好友
0
蛮牛币
204
威望
0
注册时间
2017-9-24
在线时间
59 小时
最后登录
2018-1-10
发表于 2017-10-17 11:14:40 | 显示全部楼层
道理我都懂 为什么用我老婆照片当示例图?

回复 支持 反对

使用道具 举报

排名
336
昨日变化
2

45

主题

376

帖子

4741

积分

Rank: 9Rank: 9Rank: 9

UID
42814
好友
38
蛮牛币
2288
威望
0
注册时间
2014-8-31
在线时间
1476 小时
最后登录
2018-9-16

专栏作家

QQ
发表于 2017-10-17 11:29:53 | 显示全部楼层
泰拳警告,请不要拿我老婆私照来做演示

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1050/1500
排名
2213
昨日变化
1

13

主题

111

帖子

1050

积分

Rank: 6Rank: 6Rank: 6

UID
61419
好友
0
蛮牛币
1031
威望
0
注册时间
2014-12-15
在线时间
330 小时
最后登录
2018-10-19
发表于 2017-10-17 13:12:07 | 显示全部楼层
看上起很有意思

回复

使用道具 举报

排名
62069
昨日变化
102

2

主题

32

帖子

99

积分

Rank: 2Rank: 2

UID
227833
好友
1
蛮牛币
143
威望
0
注册时间
2017-6-20
在线时间
71 小时
最后登录
2018-10-9
发表于 2017-10-17 14:15:04 | 显示全部楼层
道理我都懂 为什么用我老婆照片当示例图?

回复 支持 反对

使用道具 举报

5熟悉之中
620/1000
排名
3355
昨日变化
2

0

主题

59

帖子

620

积分

Rank: 5Rank: 5

UID
239467
好友
0
蛮牛币
1508
威望
0
注册时间
2017-8-24
在线时间
147 小时
最后登录
2018-6-1
发表于 2017-10-17 15:25:34 | 显示全部楼层
6666666666666
[发帖际遇]: 一个袋子砸在了 szxszx 头上,szxszx 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

排名
3
昨日变化

6878

主题

7402

帖子

2万

积分

Rank: 16

UID
1231
好友
185
蛮牛币
9883
威望
30
注册时间
2013-7-29
在线时间
3535 小时
最后登录
2018-10-18

社区QQ达人活力之星原创精华达人突出贡献奖财富之证游戏蛮牛QQ群会员蛮牛妹VIP

发表于 2017-10-17 16:46:49 | 显示全部楼层
z7232124 发表于 2017-10-17 11:29
泰拳警告,请不要拿我老婆私照来做演示

直接泰拳吧,然后抑郁刀法
[发帖际遇]: 清风 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

跟我念“站长妹纸萌萌哒!”我说站长,你说YO!爱你们么么哒~
回复 支持 反对

使用道具 举报

6蛮牛粉丝
1016/1500
排名
3411
昨日变化

1

主题

371

帖子

1016

积分

Rank: 6Rank: 6Rank: 6

UID
122160
好友
1
蛮牛币
1669
威望
0
注册时间
2015-9-10
在线时间
236 小时
最后登录
2018-8-1
发表于 2017-10-17 17:14:17 | 显示全部楼层
感谢分享
[发帖际遇]: Vincher 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1138/1500
排名
3613
昨日变化
1

0

主题

527

帖子

1138

积分

Rank: 6Rank: 6Rank: 6

UID
156480
好友
0
蛮牛币
1849
威望
0
注册时间
2016-7-12
在线时间
225 小时
最后登录
2018-3-16
发表于 2017-10-18 09:01:15 | 显示全部楼层
66666666666666

回复

使用道具 举报

3偶尔光临
210/300
排名
10604
昨日变化

0

主题

39

帖子

210

积分

Rank: 3Rank: 3Rank: 3

UID
109907
好友
0
蛮牛币
91
威望
0
注册时间
2015-6-23
在线时间
79 小时
最后登录
2017-11-2
发表于 2017-10-18 14:16:05 | 显示全部楼层
看起来 好好玩哦

回复

使用道具 举报

7日久生情
2639/5000
排名
663
昨日变化
1

30

主题

562

帖子

2639

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
124569
好友
25
蛮牛币
6754
威望
0
注册时间
2015-10-4
在线时间
789 小时
最后登录
2018-10-19
发表于 2017-10-19 09:34:09 | 显示全部楼层
666666666666666666
[发帖际遇]: 一个袋子砸在了 月半可可 头上,月半可可 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

4四处流浪
355/500
排名
9155
昨日变化
2

0

主题

135

帖子

355

积分

Rank: 4

UID
236283
好友
0
蛮牛币
27
威望
0
注册时间
2017-8-7
在线时间
102 小时
最后登录
2018-10-18
发表于 2017-10-19 11:56:06 | 显示全部楼层
楼主   



6666666

回复 支持 反对

使用道具 举报

5熟悉之中
897/1000
排名
2600
昨日变化

0

主题

169

帖子

897

积分

Rank: 5Rank: 5

UID
224879
好友
1
蛮牛币
1381
威望
0
注册时间
2017-6-2
在线时间
208 小时
最后登录
2018-9-9
发表于 2017-10-19 12:00:13 | 显示全部楼层
高大上了,,,人脸识别。。。566666

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表