PHP实现人脸识别技术

这次人脸识别技术,是实现在微信端的,也就是说利用公众微信平台,调用第三的API来实现人脸识别这项技术的。

实现的思路:

首先呢,将收集的照片,建立一个照片库,然后利用在微信平台发送的照片,去到照片库进行匹配,那么怎么匹配呢?

这就要利用第三方的API了。

这个是收集信息,然后存储到信息库(包括图谱库)

部分代码:

<html>
    <head>
        <meta charset="utf-8"/>
        <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
        <title>上传到人脸信息库</title>
        <link rel="stylesheet" href="./weui/dist/style/weui.min.css"/>
        <style>
         #preview, .img, img
         {
             width:79px;
             height:79px;
         }
        </style>
    </head>
    <body>
        <div class="hd" style="text-align:center;">
            <h1 class="weui_cell_primary">上传到人脸信息库</h1>
        </div>
        <form action="up.php" method="post" enctype="multipart/form-data">
            <div class="weui_cell">
                <div class="weui_cell_hd"><label class="weui_label">姓名</label></div>
                <div class="weui_cell_bd weui_cell_primary">
                    <input class="weui_input" type="text" name="username" placeholder="请输入联系人姓名"/>
                </div>
            </div>
            <div class="weui_cell">
                <div class="weui_cell_hd"><label class="weui_label">电话</label></div>
                <div class="weui_cell_bd weui_cell_primary">
                    <input class="weui_input" type="text" name="number" pattern="[0-9]*" placeholder="请输入联系人电话号码"/>
                </div>
            </div>
            <div class="weui_cell">
                <div class="weui_cell_hd"><label class="weui_label">微信</label></div>
                <div class="weui_cell_bd weui_cell_primary">
                    <input class="weui_input" type="text" name="weixin" placeholder="请输入联系人微信号"/>
                </div>
            </div>
            <div class="weui_cell">
                <div class="weui_cell_bd weui_cell_primary">
                    <div class="weui_uploader">
                        <div class="weui_uploader_hd weui_cell">
                            <div class="weui_cell_bd weui_cell_primary">图片上传</div>
                        </div>
                        <div class="weui_uploader_bd">
                             <ul class="weui_uploader_files">
                                <li class="weui_uploader_file" id="preview"></li>
                            </ul>
                            <div class="weui_uploader_input_wrp">
                                <input class="weui_uploader_input" type="file" name="pic" onchange="preview(this)" />
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <input type="submit" value="提交" class="weui_btn weui_btn_primary" style="width:40%;"/>
        </form>
    </body>
<script type="text/javascript">
 function preview(file){
    var prevDiv = document.getElementById(‘preview‘);
    if(file.files && file.files[0]){
        var reader = new FileReader();
        reader.onload = function(evt){
        prevDiv.innerHTML = ‘<img src="‘ + evt.target.result + ‘" />‘;
    }
         reader.readAsDataURL(file.files[0]);
    }else{
        prevDiv.innerHTML = ‘<div class="img" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src=\‘‘ + file.value + ‘\‘"></div>‘;
    }
 }
</script>
</html>

分析照片

<?php
	if(isset($_FILES[‘pic‘])&&$_FILES[‘pic‘][‘error‘] == 0){
		$name = mt_rand(100000,999999);
		$ext = explode(".",$_FILES[‘pic‘][‘name‘]);
		$ext = end($ext);
		$full = $name.".".$ext;
		$rs = move_uploaded_file($_FILES[‘pic‘][‘tmp_name‘], ‘./upload/‘.$full);
		if(!$rs){
			exit(‘上传图片出错‘);
		}

		//上传成功后,获取图片地址
		$pic = ‘http://yxhwxtest.applinzi.com/wx/upload/‘.$full;
		//$pic = ‘http://yxhwxtest.applinzi.com/wx/upload/718204.jpg‘;

		//人脸检测与分析
  		$api =  ‘http://apicn.faceplusplus.com/v2/detection/detect?api_key=3f2fd9843ac889c84f43de513bca05f2&api_secret=sDUH2FP2b3L4tSKQNHCCk17sUYsHW8HU&url=‘.$pic.‘&attribute=glass,pose,gender,age,race,smiling‘;

  		//将json转换为数组
  		$rs = json_decode(file_get_contents($api),true);

  		if(count($rs[‘face‘]) == 0){
  			exit(‘没有检测出人脸‘);
  		}

  		$face_id = $rs[‘face‘][0][‘face_id‘];

  		//创建脸集
  		//$api=‘https://apicn.faceplusplus.com/v2/faceset/create?api_key=3f2fd9843ac889c84f43de513bca05f2&api_secret=sDUH2FP2b3L4tSKQNHCCk17sUYsHW8HU&faceset_name=renlianshibie&face_id=‘.$face_id;

  		//将人脸加入到脸集中
   		$api = ‘https://apicn.faceplusplus.com/v2/faceset/add_face?api_secret=sDUH2FP2b3L4tSKQNHCCk17sUYsHW8HU&face_id=‘.$face_id.‘&api_key=3f2fd9843ac889c84f43de513bca05f2&faceset_name=renlianshibie‘;

   		$rs = json_decode(file_get_contents($api),true);

  		if($rs[‘success‘] == 0){
  			exit(‘加入脸集失败‘);
  		}else{
  			//训练脸集
			$api = ‘https://apicn.faceplusplus.com/v2/train/search?api_key=3f2fd9843ac889c84f43de513bca05f2&api_secret=sDUH2FP2b3L4tSKQNHCCk17sUYsHW8HU&faceset_name=renlianshibie‘;
			$rs = file_get_contents($api);
			//p($rs);
			exit(‘加入脸集成功‘);
  		}
	}
	//调试输出函数
	function p($var){
		if(is_bool($var)){
			var_dump($var);
		}else if(is_null($var)){
			var_dump(NULL);
		}else{
			echo "<pre style=‘position:relative;z-index:1000;padding:10px;border-radius:5px;background:#F5F5F5;border:1px solid #aaa;font-size:14px;line-height:18px;opacity:0.9;‘>".print_r($var,true)."</pre>";
		}
	}
?>

收集信息完成后

在微信平台上回复 你要找的人的照片

这是服务器接收到图片进行响应的代码:

			//接受图片进行回复
			if(strtolower($postObj->MsgType==‘image‘)){
				$pic = $postObj->PicUrl;
				//检测人脸和分析
 				$api =  ‘http://apicn.faceplusplus.com/v2/detection/detect?api_key=3f2fd9843ac889c84f43de513bca05f2&api_secret=sDUH2FP2b3L4tSKQNHCCk17sUYsHW8HU&url=‘.$pic.‘&attribute=glass,pose,gender,age,race,smiling‘;
 				$rs = json_decode(file_get_contents($api),true);
 				if(count($rs[‘face‘])==0){
 					$cont = "没有检测到人脸";
 				}
 				$face_id = $rs[‘face‘][0][‘face_id‘];

 				//得到人脸,到脸集中去找相似的脸
   				$api = ‘https://apicn.faceplusplus.com/v2/recognition/search?api_key=3f2fd9843ac889c84f43de513bca05f2&api_secret=sDUH2FP2b3L4tSKQNHCCk17sUYsHW8HU&faceset_name=renlianshibie&key_face_id=‘.$face_id;

   				$rs = json_decode(file_get_contents($api),true);

   				//$ps=[];

			    foreach($rs[‘candidate‘] as $v) {
			      if( intval($v[‘similarity‘]) > 60) {
			         $ps[] = $v[‘face_id‘];
			      }
			    }

   				if(empty($ps)){
   					$cont = "找到相似的人";
   				}else{
	   				$fids = implode(‘,‘, $ps);
	   			    $api = ‘https://apicn.faceplusplus.com/v2/info/get_face?api_key=3f2fd9843ac889c84f43de513bca05f2&api_secret=sDUH2FP2b3L4tSKQNHCCk17sUYsHW8HU&face_id=‘.$fids;

	   				$rs = json_decode(file_get_contents($api),true);

	   				if(count($rs[‘face_info‘])==0){
	   					$cont = ‘没有找到相识的人‘;
	   				}else{
		   				$cont = ‘找到相似的人‘."\n";
		   				foreach ($rs[‘face_info‘] as $v) {
		   					$cont .= $v[‘url‘]."\n";
		   				}
	   				}
   				}

				//回复用户消息
				$toUser 	= $postObj->FromUserName;
				$fromUser   = $postObj->ToUserName;
				$time 		= time();
				$content 	= $cont;
				$msgType 	= ‘text‘;
				$template 	= "<xml>
							   <ToUserName><![CDATA[%s]]></ToUserName>
							   <FromUserName><![CDATA[%s]]></FromUserName>
							   <CreateTime>%s</CreateTime>
							   <MsgType><![CDATA[%s]]></MsgType>
							   <Content><![CDATA[%s]]></Content>
							   </xml>";
				$info 		= sprintf($template,$toUser,$fromUser,$time,$msgType,$content);
				echo $info;
			}

然后,服务器就会返回,相应匹配到的信息。

返回的相应照片

然后就是实现了,人脸匹配的功能。

调用API的第三方平台:http://www.faceplusplus.com.cn/demo-detect/

代码下载:http://download.csdn.net/detail/yxhbk/9629866

时间: 2024-08-26 18:05:57

PHP实现人脸识别技术的相关文章

人脸识别技术应用场景与前景

随着人工智能的发展,人脸识别也不落后,争相向人们展示它的风采,在一些比较发达的城市,普遍运用刷脸的方式来解决问题,在不知不觉中大家都要靠脸吃饭了,这绝对不是贬义词.大家都知道现下流行的小鲜肉.网红什么的,都是颜值高的,偶像明星靠脸吃饭.如今不光是作为明星名人才能靠脸吃饭,我们这些普通老百姓也能如此. 人脸识别技术经历了可见光图像人脸识别.三维图像人脸识别/热成像人脸识别.基于主动近红外图像的多光源人脸识别三层进化过程,逐渐缓解和解决了光线等环境的变化对于人脸识别的影响,加之算法的不断精准演化,人

Android人脸识别技术

Android人脸识别技术用到的底层库:android/external/neven/,framework 层:frameworks/base/media/java/android/media/FaceDetector.java. java层接口的限制: 1.只能接受bitmap的数据. 2.只能识别出双眼睛距离不大于20像素的人脸. 3.只能检测人脸的位置,不能对人脸匹配. 下面代码的运行效果: @Override protected void onCreate(Bundle savedIns

支持Android、iOS系统的人脸识别技术

随着深度学习方法的应用,支持Android.iOS系统的人脸识别技术的识别率已经得到质的提升,目前我司的支持Android.iOS系统的人脸识别技术率已经达到99%.支持Android.iOS系统的人脸识别技术与其他生物特征识别技术相比,在实际应用中具有天然独到的优势:通过摄像头直接获取,可以非接触的方式完成识别过程,方便快捷.目前我司的支持Android.iOS系统的人脸识别技术已应用在金融.教育.景区.旅运.社保等领域. 支持Android.iOS系统的人脸识别技术主要分为两部分: 第一部为

三维人脸识别技术使我们更好地认识彼此

人脸识别,一种基于人的脸部特征信息进行身份认证的生物特征识别技术.近年来,随着欧美发达国家人脸识别技术开始进入实用阶段后,人脸识别迅速成为近年来全球的一个市场热点,它具有如下显著优点: ·非接触,智能交互,用户接受程度高. ·直观性突出,符合人"以貌识人"的认知规律. ·适应性强,不易仿冒,安全性好.·摄像头的大量普及,易于推广使用. 综上所述,人脸识别被人们称为最自然.最直观的一种生物特征识别技术.可以广泛应用于公安.安全.海关.金融.军队.机场.边防口岸.安防等多个重要行业及领域,

人脸识别技术特点及难点

人脸识别技术特点 人脸识别主要的特点是利用人的脸部特征作为一种身份辨识的方式,通过采集含有人脸的图像或视频流,自动对图像或视频中的人脸进行检测定位.图像预处理.特征提取和匹配识别过程,达到识别不同人身份的目的.因此,利用人脸识别技术的这个特点可以在不同场合中实现各种各样的智能化应用. 人脸识别的优势还有以下四个方面: (1)自然性.所谓的自然性是指通过观察就可以比较人脸来区分和确认身份. (2)非强制性.被识别的人脸图像信息可以主动获取而不被被测个体察觉,对个体是隐蔽的. (3)非接触性.相比较

人脸识别技术在安防行业应用中的优势

人脸识别技术在我国应用较多的是身份识别领域,它的目标市场主要是办公市场和驾校.工地等安全系数较高的行业应用领域.办公市场,即公司的门禁考勤,由于系统最多可识别上千人,大多数公司都只需要一套或几套产品就可以满足需求,所以这类市场所需的产品量不大.于是,厂商就把目标转向了行业应用领域,如驾校.工地等安全系数较高的场所,这些领域所需的产品量比较大. 中国的人脸识别技术发展追至上世纪九十年代末,在经历了"技术引进--专业市场导入--技术完善--技术应用--各行业领域使用"等五个阶段后,到目前为

人脸识别技术探讨:1:1,1:小N/大N,大姿态识别,活体识别

人脸识别是一种基于人的脸部特征信息进行身份认证的生物特征识别技术.静态人脸识别和动态人脸识别静态人脸识别是在特定的区域或者范围内来采集人脸照片并进行识别,如当前常见的门禁考勤应用.又或者是输入一张照片到人脸识别系统,如Facebook应用中采集用户的标签照片.又如警察输入照片并搜索数据库查看他/她是谁.在这两种情况下,我们都是输入一张照片来进行人脸识别.静态人脸识别的工作流程包括检测人脸.人脸对齐.提取特征向量(我们在后文也会谈及),然后将提取的特征向量与数据库中的特征向量进行比较,以确定他/她

人脸识别技术及应用,二次开发了解一下

得益于移动设备和数码摄像的高速发展,人脸识别技术突飞猛进,已经成为多项产品的主要应用支撑或重要配置.本文对目前人脸识别的三种技术及其发展方向和应用进行详尽的介绍,希望能对大家的产品开发工作提供参考. 人脸识别作为一项互联网领域热门的技术,在互联网产品很多领域都有着广泛的应用. 很多产品经理在工作中经常会遇到老板或需求部门来一句:“我们来搞个人脸识别吧.”但人脸识别发展至今已经成了一个广泛概念,通过几项不同的技术提供不同的产品应用服务.不同角色的人在不同环境里说出的人脸识别,其期待的产品和背后的技

一文读懂人脸识别技术

近日,人脸识别技术因多次在抓逃犯的过程中"立功",再度走"红".从20世纪60年代起,人脸识别研究开启,发展到今天有哪些进展?该产业里的竞争,是人工智能投资泡沫带来的浮躁,还是市场规模将持续突进? 何谓人脸识别技术? 20世纪60年代,人脸识别工程化应用研究正式开启.初期的方法主要利用了人脸的几何结构,通过分析人脸器官特征点及其之间的拓扑关系进行辨识.这种方法简单直观,但是一旦人脸姿态.表情发生变化,则精度严重下降. 如今的解决方案多是基于主动近红外图像的多光源人脸