python+百度ai平台实现人脸识别

       python调用百度AI开放平台真的好简单啊,之前试过c++调用,但是配置那三个库已经把我心态搞崩了,尼玛还有两个是嵌套的。所以python大法好。
       言归正传,我用的是百度的sdk,对应的看sdk v3的文档就可以了,在python的窗口命令行执行 pip install baidu-aip,然后就可以写代码了。或者直接进入https://ai.baidu.com/sdk 下载对应的SDK,不过这个还要每个月更新token,怪麻烦的。对了忘记说了,我用的是2.7版本的python,也试过3.6的,但是由于版本的升级,可能会报错,所以建议大家直接用2.7的。
       直接上代码吧(这里就写了四个函数):

import base64
import json
from aip import AipFace
APP_ID = '你的ID'
API_KEY = '你的key'
SECRET_KEY = '你的sk'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)
def face_detect(filepath1,filepath2):  #人脸对比
   result = client.match([
    {
        'image': base64.b64encode(open(failpath1, 'rb').read()),
        'image_type': 'BASE64',
    },
    {
        'image': base64.b64encode(open(failpath2, 'rb').read()),
        'image_type': 'BASE64',
    }
   ])
   print(result)              #打印出所有的信息
   a=result['result']['score']
   print(a)                   #单独显示出相似度 其他的类似
#   if a>80:
#     return 1
#   else:
#     return 0
def face_search(filepath):  #人脸库搜索  222207
    with open(filepath, 'rb') as fp:
        image=base64.b64encode(fp.read())
    imageType="BASE64"
    groupIdList="你的用户组名称"
    result=client.search(image,imageType,groupIdList)
    print(result)            #打印出所有信息
#    print(result['result']['user_list'][0]['score'])   #打印出相似度其他信息类似
#    print(result['result']['face_token'])
#    print(result['error_code'])     
def face_add(filepath,unit,num):  #人脸库增加 地址 组 用户
    with open(filepath,'rb') as fp:
        image=image=base64.b64encode(fp.read())
    imageType="BASE64"
    groupid=unit
    userid=num
    result=client.addUser(image,imageType,groupid,userid)
    if result['error_code']==0:
        print("增加人脸成功")
    else:
        print("增加人脸失败")
#    print(result)    
def face_delete(filepath):  #删除人脸库
    userId = "用户名称"
    groupId = "用户组名称"
    result = client.deleteUser(groupId, userId);  #其实这里不用按照官方的demo三个参数 每张照片单独的token不用也可以的!
    print(result)
    if result['error_code']==0:
        print("删除人脸成功")
    else:
        print("删除人脸失败")
if __name__=='__main__':
 #   face_detect('你照片的路径','你另一张照片的路径')
 #   face_search('照片的路径')
 #   face_delete('照片的路径')
 #   face_add('照片的路径','用户组名称','用户名称')

       写道这里忍不住想吐槽一下,百度AI平台名义上是AI,但是我并没有发现他具体有哪些人工智能,就拿人脸识别来说吧,你不过是在平台上申请了一个账号,然后把照片传上去,调用的时候执行一下他的人脸识别的算法,就这么简单,用的是他训练好的模型。(百度的水很深啊)然后这样就形成了一个良性循环,训练的人脸库越多,识别的准确度越高,百度哪里来的那么多的人脸库呢,我们上传的啊,用完之后我们还感叹,百度平台好方便…

       其实呢这里并没有黑百度的意思,也希望百度不要针对我,(嘻嘻嘻)还是鼓励大家认真学习,自己写算法,起码以后会不愁吃饭的。。。

识别结果大概是这样 {'result': {'face_num': 1, 'face_list': [{'quality': {'occlusion': {'right_eye': 0, 'left_cheek': 0.1459853947, 'right_cheek': 0.05144193396, 'left_eye': 0.465408802, 'mouth': 0.02919708006, 'chin_contour': 0.01420217194, 'nose': 0}, 'illumination': 116, 'blur': 7.266304692e-06, 'completeness': 1}, 'age': 22, 'face_token': 'dc6f8f9df5d977ea476e2d04acdf5063', 'race': {'type': 'white', 'probability': 0.6173604727}, 'glasses': {'type': 'common', 'probability': 0.9834988713}, 'gender': {'type': 'male', 'probability': 0.655915916}, 'face_probability': 0.9185044169, 'beauty': 51.21487427, 'angle': {'roll': -2.750922441, 'yaw': 28.97134399, 'pitch': 5.202290535}, 'location': {'height': 65, 'top': 112.0704803, 'width': 76, 'left': 76.20765686, 'rotation': -4}, 'face_type': {'type': 'human', 'probability': 0.9992217422}, 'face_shape': {'type': 'oval', 'probability': 0.4419156313}, 'expression': {'type': 'none', 'probability': 0.9999142885}}]}, 'error_msg': 'SUCCESS', 'timestamp': 1537413754, 'cached': 0, 'error_code': 0, 'log_id': 9465840013520} 年龄:22 颜值:51.21487427 表情-type(none:不笑;smile:微笑;laugh:大笑):none 表情-probability(表情置信度,范围【0~1】,0最小、1最大):0.9999142885 脸型-type(square: 正方形 triangle:三角形 oval: 椭圆 heart: 心形 round: 圆形):oval 脸型-probability(置信度,范围【0~1】,代表这是人脸形状判断正确的概率,0最小、1最大):0.4419156313 性别-type(male:男性 female:女性):male 性别-probability(性别置信度,范围【0~1】,0代表概率最小、1代表最大。):0.655915916 是否带眼镜-type(none:无眼镜,common:普通眼镜,sun:墨镜):common 是否带眼镜-probability(眼镜置信度,范围【0~1】,0代表概率最小、1代表最大。):0.9834988713 人种-type(yellow: 黄种人 white: 白种人 black:黑种人 arabs: 阿拉伯人):white 人种-probability(人种置信度,范围【0~1】,0代表概率最小、1代表最大。):0.6173604727 真实人脸/卡通人脸 -type(human: 真实人脸 cartoon: 卡通人脸):human 真实人脸/卡通人脸 -probability(人脸类型判断正确的置信度,范围【0~1】,0代表概率最小、1代表最大。):0.9992217422
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值