百度AI人脸识别 部分接口封装调用

<?php
namespace Common\Model;
use Think\Model;

class AipFaceModel extends Model {
    protected $tableName = 'member';

    /**
     * composer安装百度人脸识别AIP: composer require baidu/aip-sdk
     */


    /**
     * URl 人脸注册
     * @param $param
     * @return mixed
     */
    public function add_user_by_url($param){
        $return = ['status'=>0,'msg'=>'','data'=>[]];

        if(empty($param['uid'])){$return['msg'] = '未获取到用户ID';return $return;}
        if(empty($param['img_url'])){$return['msg'] = '未获取到图像地址';return $return;}

        $image = $param['img_url'];
        $imageType = 'URL';
        $groupId = $param['group'] ? $param['group'] : 'group_1';
        $userId = $param['uid'];

        $AipFace = new \AipFace();
        $res = $AipFace->addUser($image, $imageType, $groupId, $userId);
        if($res['error_code'] != 0 || $res['error_msg'] != 'SUCCESS'){
            $return['msg'] = '注册失败';
            return $return;
        }

        $return['status'] = 1;
        $return['msg'] = '注册成功';
        $return['data'] = $res;
        return $return;
    }


    /**
     * URL 人脸搜索
     * @param $param
     * @return mixed
     */
    public function search_user_by_url($param){
        $return = ['status'=>0,'msg'=>'','data'=>[]];

        if(empty($param['uid'])){$return['msg'] = '未获取到用户ID';return $return;}
        if(empty($param['img_url'])){$return['msg'] = '未获取到图像地址';return $return;}


        $image = $param['img_url'];
        $imageType = 'URL';
        $groupIdList = $param['group'] ? $param['group'] : 'group_1';

        $options = [];
        $options['max_face_num'] = 3;
        $options['match_threshold'] = 50;
        $options['quality_control'] = 'NORMAL';
        $options['liveness_control'] = 'LOW';
        $options['max_user_num'] = 1;
        $options['user_id'] = $param['uid'];

        $AipFace = new \AipFace();
        $res = $AipFace->search($image, $imageType, $groupIdList, $options);
        if($res['error_code'] != 0 || $res['error_msg'] != 'SUCCESS'){
            $return['msg'] = '验证失败';
            return $return;
        }

        $return['status'] = 1;
        $return['msg'] = '验证成功';
        $return['data'] = $res;
        return $return;
    }

    /**
     * 获取用户列表
     * @param $param
     * @return mixed
     */
    public function get_group_users($param){
        $return = ['status'=>0,'msg'=>'','data'=>[]];

        $groupId = $param['group'] ? $param['group'] : 'group_1';

        $AipFace = new \AipFace();
        $res = $AipFace->getGroupUsers($groupId);
        if($res['error_code'] != 0 || $res['error_msg'] != 'SUCCESS'){
            $return['msg'] = '获取失败';
            return $return;
        }

        $return['status'] = 1;
        $return['msg'] = '获取成功';
        $return['data'] = $res;
        return $return;
    }

    /**
     * 获取用户人脸列表
     * @param $param
     * @return mixed
     */
    public function face_get_list($param){
        $return = ['status'=>0,'msg'=>'','data'=>[]];

        if(empty($param['uid'])){$return['msg'] = '未获取到用户ID';return $return;}

        $userId = $param['uid'];
        $groupId = $param['group'] ? $param['group'] : 'group_1';

        $AipFace = new \AipFace();
        $res = $AipFace->faceGetlist($userId, $groupId);
        if($res['error_code'] != 0 || $res['error_msg'] != 'SUCCESS'){
            $return['msg'] = '获取失败';
            return $return;
        }

        $return['status'] = 1;
        $return['msg'] = '获取成功';
        $return['data'] = $res;
        return $return;
    }

    /**
     * 人脸删除
     * @param $param
     * @return mixed
     */
    public function face_delete($param){
        $return = ['status'=>0,'msg'=>'','data'=>[]];

        if(empty($param['uid'])){$return['msg'] = '未获取到用户ID';return $return;}
        if(empty($param['face_token'])){$return['msg'] = 'faceToken error';return $return;}

        $userId = $param['uid'];
        $groupId = $param['group'] ? $param['group'] : 'group_1';
        $faceToken = $param['face_token'];


        $AipFace = new \AipFace();
        $res = $AipFace->faceDelete($userId, $groupId, $faceToken);
        if($res['error_code'] != 0 || $res['error_msg'] != 'SUCCESS'){
            $return['msg'] = '删除失败';
            return $return;
        }

        $return['status'] = 1;
        $return['msg'] = '删除成功';
        $return['data'] = $res;
        return $return;
    }



}
本DEMO参考了https://download.csdn.net/download/abill425/10554049?tdsourcetag=s_pctim_aiomsg 资料; 非常感谢,如有侵权,请与本人联系; 与参考的资料相比,不同的是:参考资料是百度人脸SDK离线版本V1.0版本的; 而本DEMO是百度人脸SDK离线版本V1.1版本的; 本demo是x64的,封装成可供c#调用的dll是BaiduFaceDll.dll 使用步骤: 1.到百度AI开放平台 https://ai.baidu.com ,下载百度人脸离线SDK,(注意版本V1.1.0,修改日期:2018.08.31) 2.下载后,把sdk包里那个443 MB的face-resource目录,复制到本demo的BaiduFaceDll\x64目录下(就是BaiduFaceDll.dll所在目录的上级目录) 3.打开BaiduFaceDll\x64\\Release\LicenseTool.exe,输入试用序列号(在百度AI开放平台取得,有效期30天),完成激活。注意,激活时需要联网。或者将已有的license.ini和license.key文件拷贝至此目录,注意注册序列号是与硬件相关的; 4.将本demo的BaiduFaceDll\x64\Release路径,加到系统的path变量中。 5.运行本demo的BaiduFaceDll\x64\Release目录下的WindowsFormsApplication1.exe,可以测试封装的dll,输入两张图片;然后单击:图像对比,会显示对比结果; 在C#中的函数注册: //请将"BaiduFaceDll.dll"修改为实际路径,如@"d:\BaiduFaceDll\x64\Release\BaiduFaceDll.dll", 或者直接把该实际路径加到系统的path变量中。 [DllImport("BaiduFaceDll.dll")] public static extern void Init();//初始化 [DllImport("BaiduFaceDll.dll")] public static extern void UnInit();//销毁 [DllImport("BaiduFaceDll.dll")] public extern static int Track(string imgstr, ref StringBuilder res);//人脸检测,imgstr为图片的base64编码字符串 [DllImport("BaiduFaceDll.dll")] public static extern int User_Add(string user_id, string imgstr);//添加用户,imgstr为图片的base64编码字符串 [DllImport("BaiduFaceDll.dll")] public static extern int User_Delete(string user_id);//删除用户 [DllImport("BaiduFaceDll.dll")] public extern static void Identify(string imgstr, ref StringBuilder res);//人脸识别,imgstr为图片的base64编码字符串 [DllImport("BaiduFaceDll.dll")] public extern static void Match(string image1, int img_type1, string image2, int img_type2, ref StringBuilder res);//人脸1:1对比编码字符串 sdk调用流程: 初始化 -> 图片对比 -> 销毁 具体详细的windows-sdk使用说明,参见 http://ai.baidu.com/docs#/Face-Offline-SDK-Windows/top 源码: 本demo的BaiduFaceDll\BaiduFaceDll目录,是本封装dll的c++源码。VS版本为2015,Framework版本为4.0。 本DEMO只是封装了几个示例,其余封装,参考样式自行编写;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨四点的_LA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值