借用face++人脸识别,来识别年龄

新手笔记,大神不要笑话

前端代码

index.htnl

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<h1>年龄预测</h1>
<form action="index.php" method="post"
      enctype="multipart/form-data">
    <label for="file">输入一张单人照片:</label>
    <input type="file" name="file" id="file" />
    <br />
    <br />
    <br />
    <input type="submit" name="submit" value="预测年龄" />
</form>
</body>
</html> 

php代码

index.php

<?php
require_once(__DIR__ . "/FacePPClientDemo.php");

header("Content-type: text/html; charset=utf-8");

$time=time();

if ((($_FILES["file"]["type"] == "image/gif")
        || ($_FILES["file"]["type"] == "image/jpeg")
        || ($_FILES["file"]["type"] == "image/pjpeg"))//为了限制用户上传的文件的类型
    && ($_FILES["file"]["size"] < 20000000))//为了限制文件上传的大小,这里设置为20M,足够了
{
    if ($_FILES["file"]["error"] > 0)
    {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
    else
    {
        move_uploaded_file($_FILES["file"]["tmp_name"],
            "upload/".$time .$_FILES["file"]["name"]);
//加$time的目的是为了防止用户上传的图片名一致
    }
}
else
{
    echo "Invalid file";
}

$api_key = "你在face上注册之后获得的api_key";
$api_secret = "你在face上注册之后获得的api_secret"; $api = new FacePPClientDemo($api_key, $api_secret); $person_name="你创建的personname";$imageurl="之前上传文件在你服务器中的地址".$time. $_FILES["file"]["name"];$result = $api->face_detect($imageurl); if (empty($result->face)) { echo "没有检测到人脸,再换一张照片试试吧"; }elseif (count($result->face) > 1){ echo "检测到有多张人脸,请上传一张单人照片"; } else{ $age= $result->face[0]->attribute->age->value; echo "<html><head></head><body><font>你的年龄大概是:$age 岁。</font> <img src= $imageurl ></body></html>" ; }

需要引入的php函数

FacePPClientDemo.php
<?php
define ("DEBUG_MODE", true);

class FacePPClientDemo
{    //定义一个类
    private $api_server_url;//服务器提交地址
    private $auth_params;

    public function __construct($api_key, $api_secret)
    {
        $this->api_server_url = "http://api.cn.faceplusplus.com/v2/";
        $this->auth_params = array();
           $this->auth_params[‘api_key‘] = $api_key;
           $this->auth_params[‘api_secret‘] = $api_secret;
    }

    //////////////////////////////////////////////////////////
    // public mathods
    //////////////////////////////////////////////////////////

    public function person_create($person_name)
    {
        return $this->call("person/create", array("person_name" => $person_name));
    }

    public function person_delete($person_name)
    {
        return $this->call("person/delete", array("person_name" => $person_name));
    }

    public function person_add_face($face_id, $person_name)
    {
        return $this->call("person/add_face", array("person_name" => $person_name,
                                                         "face_id" => $face_id));
    }

    public function train_identify($group_name)
    {
        return $this->call("train/identify", array("group_name" => $group_name));
    }

    public function face_detect($urls = null)
    {
        return $this->call("detection/detect", array("url" => $urls));
    }

    public function recognition_identify($url, $group_name)
    {
        return $this->call("recognition/identify", array("url" => $url,
                                                          "group_name" => $group_name));
    }

    public function group_create($group_name)
    {
        return $this->call("group/create", array("group_name" => $group_name));
    }

    public function group_delete($group_name)
    {
        return $this->call("group/delete", array("group_name" => $group_name));
    }

    public function group_add_person($person_name, $group_name)
    {
        return $this->call("group/add_person", array("person_name" => $person_name,
                                                      "group_name" => $group_name));
    }

    public function info_get_session($session_id) {
        return $this->call("info/get_session", array("session_id" => $session_id));

    }

    public function face_detect_post($filename)
    {
        return $this->post_call("detection/detect", array(
                                  "img" => ‘@‘.$filename
                                  ));
    }

    //////////////////////////////////////////////////////////
    // private mathods
    //////////////////////////////////////////////////////////

    protected function call($method, $params = array())
    {
        $params = array_merge($this->auth_params, $params);
        $url = $this->api_server_url . "$method?".http_build_query($params);

        if (DEBUG_MODE)
        {
//            echo "REQUEST: $url" . "\n";
        }

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         $data = curl_exec($ch);
        curl_close($ch);    

        $result = null;
        if (!empty($data))
        {
            if (DEBUG_MODE)
            {
//                echo "RETURN: " . $data . "\n";
            }
            $result = json_decode($data);

        }

        return $result;

    }

    protected function post_call($method, $params = array())
    {
        $params = array_merge($this->auth_params, $params);
        $url = $this->api_server_url . "$method";

        if (DEBUG_MODE)
        {
//            echo "REQUEST: $url?" .http_build_query($params)."\n";
        }

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         $data = curl_exec($ch);
        curl_close($ch);

        $result = null;
        if (!empty($data))
        {
            if (DEBUG_MODE)
            {
//                echo "RETURN: " . $data . "\n";
            }
            $result = json_decode($data);
        }

        return $result;
    }

}
?>

它的api在这里  http://www.faceplusplus.com.cn/api-overview/

php的demo    http://www.faceplusplus.com.cn/wp-content/uploads/Demo_PHP.zip

如果对图片上传有疑问的请看:http://www.cnblogs.com/tobemaster/p/5376768.html

时间: 2024-10-13 01:29:18

借用face++人脸识别,来识别年龄的相关文章

Python3使用百度人脸识别接口识别高颜值妹子图片

一.在百度云平台创建应用 为什么要到百度云平台创建应用,首先来说是为了获取获取access_token时需要的API Key和Secret Key 至于为什么需要API Key和Secret Key才能获取access_token,应该一是为了推广一下百度云二是为了获取一些统计数据.微信苹果要你们搞得,度娘就不能要你们搞得?不要纠结 1.访问百度AI开放 平台:http://ai.baidu.com/ 2."产品服务"----"人脸检测" 3. "立即使用

人脸检测及识别python实现系列(4)——卷积神经网络(CNN)入门

人脸检测及识别python实现系列(4)--卷积神经网络(CNN)入门 上篇博文我们准备好了2000张训练数据,接下来的几节我们将详细讲述如何利用这些数据训练我们的识别模型.前面说过,原博文给出的训练程序使用的是keras库,对我的机器来说就是tensorflow版的keras.训练程序建立了一个包含4个卷积层的神经网络(CNN),程序利用这个网络训练我的人脸识别模型,并将最终训练结果保存到硬盘上.在我们实际动手操练之前我们必须先弄明白一个问题--什么是卷积神经网络(CNN)? CNN(Conv

人脸检测及识别python实现系列(2)——识别出人脸

人脸检测及识别python实现系列(2)--识别出人脸 从实时视频流中识别出人脸区域,从原理上看,其依然属于机器学习的领域之一,本质上与谷歌利用深度学习识别出猫没有什么区别.程序通过大量的人脸图片数据进行训练,利用数学算法建立建立可靠的人脸特征模型,如此即可识别出人脸.幸运的是,这些工作OpenCV已经帮我们做了,我们只需调用对应的API函数即可,先给出代码: #-*- coding: utf-8 -*- import cv2 import sys from PIL import Image d

qml+opencv(三)人脸检测与识别

ccface 介绍 这个我闲的蛋疼无聊做的一个人脸检测和识别的小程序. 环境 Qt5+opencv2.4.9 使用 通过File菜单打开关闭摄像头 ID填入标识,save保存 select 识别 检测 save 识别 程序地址: https://git.oschina.net/zhouX/ccface.git

基于OpenCv的人脸检测、识别系统学习制作笔记之三

1.在windows下编写人脸检测.识别系统.目前已完成:可利用摄像头提取图像,并将人脸检测出来,未进行识别. 2.在linux下进行编译在windows环境下已经能运行的代码. 为此进行了linux系统下OpenCv的安装. 在linux中安装OpenCv遇到了很多问题,已经解决,但是花费了不少时间.目前:可以在linux下编译OpenCv项目,但是运行生成的程序时出现问题.初步认定为采用了虚拟机而导致运行内存不足,程序直接崩溃,将继续解决这个问题. 花费较多时间安装OpenCv是有必要的,为

人工智能之基于face_recognition的人脸检测与识别

不久乘高铁出行,看见高铁火车站已经实现了"刷脸进站",而且效率很高,很感兴趣,今天抽时间研究一下,其实没那么复杂. 我基本上是基于https://github.com/ageitgey/face_recognition上的资料和源码做一些尝试和试验. 首先,需要配置我们的python环境,我悬着的python27(比较稳定),具体过程不多说了. 然后,需要安装这次的主角face_recognition库,这个的安装花了我不少时间,需要注意一下几点(按照本人的环境): 1,首先,安装vi

OpenCV-Python 人脸眼睛嘴识别

1 # 识别眼睛.嘴巴.人脸 2 image = cv2.imread('./yong.jpg') 3 4 gray = cv2.cvtColor(image,code=cv2.COLOR_BGR2BGRA) 5 # 加载算法 6 face_detector = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml') 7 eye_detector = cv2.CascadeClassifier('./haarcascade_e

人脸跟踪、识别、脸部标识

知识点: 人脸跟踪 人脸特征 要识别的人脸特征距离 看效果图,鼻子部分已经被标识出来了: 主要用到了dlib import dlib predictor_path = 'models\\shape_predictor_68_face_landmarks.dat' face_rec_model_path = 'models\\dlib_face_recognition_resnet_model_v1.dat' detector = dlib.get_frontal_face_detector()

解析Vin码识别/车架号识别的识别过程

相信大家对Vin码识别/车架号识别的识别过程都很感兴趣吧,今天来简单的给大家介绍一下! 第一步.汽车Vin码识别/车架号识别图像的输入以及预处理.通过图像的裁切校正.二值化对图片进行初步的处理,把前景作为黑色,背景作为白色有利于计算机更好的识别处理. 第二步.汽车Vin码识别/车架号识别,进行字符切割,减少拍照过程中由于角度等问题造成的字迹粘连等问题.字符识别从图片中提取想要的信息,以特征提取为主,由于文字的位移,笔画的粗细,断笔,粘连,旋转等因素的影响,极大影响特征的提取的难度,尤其是Vin码

如何使用迅捷OCR文字识别软件识别提取图中文字

识别提取文字的问题相信是很多小伙伴都经历过的,一般遇到这种问题,很多人都选择了用电脑打字进行转换,这种方法比较的耽误时间,其实除了这种方法我们还有其它的选择,就是通过借助文字识别软件识别提取图片中的文字,具体怎样去操作呢?一起来学习下. 使用工具:电脑 迅捷OCR文字识别软件 实用系数:☆☆☆☆☆ 推荐理由:软件采用先进的OCR识别技术,识别精度高,能够轻松实现文档数字化,操作起来简单易上手. 操作步骤: 步骤一.准备好一张带有文字的图片在电脑中,然后打开文字识别软件,鼠标点击上方图片局部识别板