0

0

微信公众平台消息接口开发图片识别之人脸识别

高洛峰

高洛峰

发布时间:2017-03-01 09:35:57

|

6069人浏览过

|

来源于php中文网

原创

一、前言

前几个小应用似乎不给力,反应不冷不热,似乎大家不感兴趣,今天给大家推出一个亮眼一点的:微信公众平台上的人脸识别。

前段时间看到网上有个报道  四川大学计算机科学系主任、副教授 魏骁勇 开发了 基于图像的课堂考勤系统, 上课点名用人脸识别来‘刷脸’,看下图

微信公众平台消息接口开发图片识别之人脸识别

在点名时,只需多角度对教室内的学生分区域拍照,然后将照片上传到服务器,自动拼接成一张整图,系统再对照片里的学生头像自动编号和识别,最后出现学生的个人信息,旁边则有“It’sme(是我)”和“notme(不是我)”两个选项。这样马上就能知道谁在上课、谁在逃课了

更神的是,这东西在统计学上的意义:它甚至可以分析出学生的人际关系甚至性格兴趣,比如它根据学生在课堂上喜欢坐在哪些位置,喜欢坐在谁的旁边,得出原始数据,经过一段时间之后,再来分析,就可以谁和谁在谈恋爱,谁和谁分手后又和谁在一起了。谁老是喜欢自己一个人独自坐在角落(自闭症),某个男生和某个男生半年下来每次都坐在一起(基友???),瞬间感觉这玩意给人的想象空间无限大。。。。。。

 

下面开始言归正传了:

首先看一下什么是人脸识别,看一下百度百科的定义:人脸识别特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。人脸识别是一项热门的计算机技术研究领域,可以将人脸明暗侦测,自动调整动态曝光补偿,人脸追踪侦测,自动调整影像放大;它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

人脸识别的技术过程(来自百度百科)

一般分三步:
(1)首先建立人脸的面像档案。即用摄像机采集单位人员的人脸的面像文件或取他们的照片形成面像文件,并将这些面像文件生成面纹(Faceprint)编码贮存起来。
(2)获取当前的人体面像。即用摄像机捕捉的当前出入人员的面像,或取照片输入,并将当前的面像文件生成面纹编码。
(3)用当前的面纹编码与档案库存的比对。即将当前的面像的面纹编码与档案库存中的面纹编码进行检索比对。上述的“面纹编码”方式是根据人脸脸部的本质特征和开头来工作的。这种面纹编码可以抵抗光线、皮肤色调、面部毛发、发型、眼镜、表情和姿态的变化,具有强大的可靠性,从而使它可以从百万人中精确地辩认出某个人。人脸的识别过程,利用普通的图像处理设备就能自动、连续、实时地完成。

 

二、在微信公众平台上做人脸识别

1. 图片获取

首先要获得用户发过来的图片,微信公众平台支持接收图片,

用户发送的一个图片如下:

微信公众平台消息接口开发图片识别之人脸识别

其图片消息的格式如下:


    
    
    1357543196
    
    
    5830603629728080261

ToUserName 消息接收方微信号,一般为公众平台账号微信号
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 消息类型;图片消息为image
PicUrl 图片链接地址
MsgId 消息ID号

 

2. 接口

Face++提供人脸识别接口,

检测给定图片(Image)中的所有人脸(Face)的位置和相应的面部属性接口地址如下:
http://apicn.faceplusplus.com/v2/detection/detect

参数

是否必须

含义

api_key

必须

App的Face++ API Key

api_secret

必须

APP的Face++ API Secret

url 或 img[POST]

必须

待检测图片的URL 或者 通过POST方法上传的二进制数据,原始图片大小需要小于3M

mode

可选

检测模式可以是normal(默认) 或者 oneface 。在oneface模式中,检测器仅找出图片中最大的一张脸。

attribute

可选

可以是none或者由逗号分割的属性列表。默认为gender, age, race, smiling。目前支持的属性包括:gender, age, race, smiling, glass, pose

tag

可选

可以为图片中检测出的每一张Face指定一个不包含^@,&=*'"等非法字符且不超过255字节的字符串作为tag,tag信息可以通过 /info/get_face 查询

async

可选

如果置为true,该API将会以异步方式被调用;也就是立即返回一个session id,稍后可通过/info/get_session查询结果。默认值为false。

ChatGPT Website Builder
ChatGPT Website Builder

ChatGPT网站生成器,AI对话快速生成网站

下载


返回如下

{
    "face": [
        {
            "attribute": {
                "age": {
                    "range": 5,
                    "value": 17
                },
                "gender": {
                    "confidence": 99.9781,
                    "value": "Female"
                },
                "glass": {
                    "confidence": 99.9815,
                    "value": "None"
                },
                "pose": {
                    "pitch_angle": {
                        "value": 0.000019753399999999996
                    },
                    "roll_angle": {
                        "value": 1.75177
                    },
                    "yaw_angle": {
                        "value": 4
                    }
                },
                "race": {
                    "confidence": 99.471,
                    "value": "Asian"
                },
                "smiling": {
                    "value": 87.1365
                }
            },
            "face_id": "c772b4b66c00d46b15344eff74b56e48"
        }
    ],
    "img_height": 293,
    "img_id": "3005132383841edd08c9b500fb1fe2c4",
    "img_width": 440,
    "session_id": "4e64c73fec19442cbefde3cf9bd6b53d",
    "url": ""
}

参数:

gender

object

包含性别分析结果,value的值为Male/Female, confidence表示置信度

age

object

包含年龄分析结果,value的值为一个非负整数表示估计的年龄, range表示估计年龄的正负区间

race

object

包含人种分析结果,value的值为Asian/White/Black, confidence表示置信度

smiling

object

包含微笑程度分析结果,value的值为0-100的实数,越大表示微笑程度越高

实现方法

取结果参数中的gender,age,race,smiling等参数 ,如

"attribute": {
                "age": {
                    "range": 5,
                    "value": 17
                },
                "gender": {
                    "confidence": 99.9781,
                    "value": "Female"
                },
                "glass": {
                    "confidence": 99.9815,
                    "value": "None"
                },
                "pose": {
                    "pitch_angle": {
                        "value": 0.000019753399999999996
                    },
                    "roll_angle": {
                        "value": 1.75177
                    },
                    "yaw_angle": {
                        "value": 4
                    }
                },
                "race": {
                    "confidence": 99.471,
                    "value": "Asian"
                },
                "smiling": {
                    "value": 87.1365
                }

上述结果中,

年龄age为17,误差在5岁
性别为female,表示女,置信度为99%
种族为亚洲Asian,
微笑度 87%

和图片比较一下,还是比较一致的

微信公众平台消息接口开发图片识别之人脸识别

 

3. 程序实现

SDK如下:

"attribute": {
                "age": {
                    "range": 5,
                    "value": 17
                },
                "gender": {
                    "confidence": 99.9781,
                    "value": "Female"
                },
                "glass": {
                    "confidence": 99.9815,
                    "value": "None"
                },
                "pose": {
                    "pitch_angle": {
                        "value": 0.000019753399999999996
                    },
                    "roll_angle": {
                        "value": 1.75177
                    },
                    "yaw_angle": {
                        "value": 4
                    }
                },
                "race": {
                    "confidence": 99.471,
                    "value": "Asian"
                },
                "smiling": {
                    "value": 87.1365
                }

调用方式如下:

api_key = $api_key;
        }
        if($api_secret){
            $this->api_secret = $api_secret;
        }
        if($server){
            $this->server = $server;
        }
    }

    /**
    * @param $method : The Face++ API 
    * @param $params : Request Parameters
    * @return : Array {'http_code':'Http Status Code', 'request_url':'Http Request URL','body':' JSON Response'}
    **/
    public function execute($method,$params){
        if(empty($params)){
            $params=array();
        }
        $params['api_key'] = $this->api_key;
        $params['api_secret'] = $this->api_secret;

        return $this->request("{$this->server}{$method}",$params);
    }

    private function request($request_url , $request_body){
        $useragent = 'Faceplusplus PHP SDK/1.0';
        $curl_handle = curl_init();
        curl_setopt($curl_handle, CURLOPT_URL, $request_url);
        curl_setopt($curl_handle, CURLOPT_FILETIME, TRUE);
        curl_setopt($curl_handle, CURLOPT_FRESH_CONNECT, FALSE);
        curl_setopt($curl_handle, CURLOPT_CLOSEPOLICY, CURLCLOSEPOLICY_LEAST_RECENTLY_USED);
        curl_setopt($curl_handle, CURLOPT_MAXREDIRS, 5);
        curl_setopt($curl_handle, CURLOPT_HEADER, FALSE);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl_handle, CURLOPT_TIMEOUT, 5184000);
        curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 120);
        curl_setopt($curl_handle, CURLOPT_NOSIGNAL, TRUE);
        curl_setopt($curl_handle, CURLOPT_REFERER, $request_url);
        curl_setopt($curl_handle, CURLOPT_USERAGENT, $useragent);
        if (extension_loaded('zlib')){
            curl_setopt($curl_handle, CURLOPT_ENCODING, '');
        }
        curl_setopt($curl_handle, CURLOPT_POST, TRUE);
        if(array_key_exists('img',$request_body)){
            $request_body['img'] = '@'.$request_body['img'];
        }else{
            $request_body=http_build_query($request_body);
        }
        curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $request_body);
        $response_text = curl_exec($curl_handle);
        $reponse_header = curl_getinfo($curl_handle);
        curl_close($curl_handle);
        return array('http_code'=>$reponse_header['http_code'],'request_url'=>$request_url,'body'=>$response_text);
    }
}

在微信中再将结果整理成文本消息就可以了。

 

4. 效果展示

下面是实际使用结果:

漂亮/帅气指数鉴定技术

微信公众平台消息接口开发图片识别之人脸识别微信公众平台消息接口开发图片识别之人脸识别

近亲及亲子鉴定技术

微信公众平台消息接口开发图片识别之人脸识别微信公众平台消息接口开发图片识别之人脸识别

男人味/女人味鉴定技术

微信公众平台消息接口开发图片识别之人脸识别微信公众平台消息接口开发图片识别之人脸识别

更多微信公众平台消息接口开发图片识别之人脸识别相关文章请关注PHP中文网!

相关文章

微信app下载
微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

12

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

4

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

20

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

18

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

19

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

3

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 6.7万人学习

Uniapp180分钟快速入门
Uniapp180分钟快速入门

共25课时 | 4.6万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共67课时 | 9.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号