验证脸部识别的代码

<?PHP
/**
* Face++ PHP SDK
**/
class Facepp{
    var $server = 'http://apius.faceplusplus.com/v2';
    #var $server = 'https://apius.faceplusplus.com/v2';
    #var $server = 'http://apicn.faceplusplus.com/v2';
    #var $server = 'https://apicn.faceplusplus.com/v2';

    var $api_key = "648883e1c1c3600a63f45df43500fb5a";
    var $api_secret = "lxwYbm3sKkdaq15KIGGaM7tmdgpyKl-i";

    public function __construct($api_key=NULL, $api_secret=NULL, $server=NULL){
        if($api_key){
            $this->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 = 'PHPClient/2.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);
    }
}
/*
*对于网站封面没有头像的图片进行处理,使有图像的图片放在首页
**/
set_time_limit(0);
require_once(realpath(dirname(__FILE__).'/../').'/config/config.inc.php');
require_once(realpath(dirname(__FILE__).'/../').'/init.php');
$_PS_file = str_replace('/home/admin/','http://www.',_PS_PROD_IMG_DIR_ );
$facepp = new Facepp();
$sql = 'SELECT i.* FROM ps_image i LEFT JOIN (SELECT id_product,id_image FROM ps_image GROUP BY id_product HAVING COUNT(id_image) > 1) a 
    ON a.id_product = i.id_product WHERE a.id_image IS NOT NULL';
$images = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql);
//var_dump($images);
foreach ($images as $image) {
        $result[$image['id_product']][$image['id_image']] = $image[cover];
        //var_dump($image['id_product']);        
}
foreach ($result as $key => $value) {
    $imgs = array();
    foreach ($value as $id_image => $val) {
        $url = $_PS_file.$key."-".$id_image.'.jpg';
        //var_dump($url).'<br/>';
        //echo $val;
        $params=array('url'=>$url, 'attribute' => 'pose');
        $response = $facepp->execute('/detection/detect',$params);
        $arr = json_decode($response['body'],true);
        //var_dump($arr);
        //有脸的图片,把图片的id_image取出来
        if(isset($arr['face']['0'])) {
            $imgs[$id_image] = $arr['face']['0']['position']['eye_right']['x'] - $arr['face']['0']['position']['eye_left']['x'];;
        }
    }

    //如果图片的数组大于零,说明有脸的图片有好几张
    if(count($imgs) > 0){
        //去数组中的最大值,即两眼间距最大就是脸部最大的图片
        $img = array_search(max($imgs), $imgs);
        echo $sql1 = 'update ps_image set cover = 0 where id_product='.$key;
        echo $sql2 = 'update ps_image set cover = 1 where id_image='.$img;
        mysql_query($sql1);
        mysql_query($sql2);
        // var_dump($result1);
        // var_dump($result2);
        sleep(1);
    }
}


你可能感兴趣的:(验证脸部识别的代码)