zoukankan      html  css  js  c++  java
  • 百度Aip人脸识别之python代码

    用python来做人脸识别代码量少 思路清晰,

    在使用之前我们需要在我们的配置的编译器中通过pip install baidu-aip  即可

    from aip import AipFace

    就可以开始使用api了 我们第一次接触这个东西不妨

    help(AipFace)

    你就可以看到他所支持的功能。

    在使用之前我们需要在百度的后台创建应用。将我们人脸都存放入库中。

    其次我们要了解一个概念,我们要将本机中的图片与后台的人脸对比的话我们需要将图片转成base64的字符串的格式

    import base64
    f = open('./photo/mr.jpg', 'rb')
    image = base64.b64encode(f.read())
    image64 = str(image,'utf-8')
    image_type = "BASE64"
    
    

    当然我们也可以将base64码转换成图片。

    人脸检测的原理是通过机器学习转化提前图片人脸中的七十二个关键点。并进行其他的分析。

    python3的代码为

    '''
    # 人脸检测与属性分析
    '''
    
    request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
    
    f = open('./photo/mr.jpg', 'rb')
    image = base64.b64encode(f.read())
    image64 = str(image,'utf-8')
    image_type = "BASE64"
    
    
    
    # params = "{"image":"%s","image_type":"BASE64","face_field":"faceshape,facetype"}"%image64
    params = {'image': image64,'image_type':"BASE64",'face_field': 'faceshape,facetype'}
    # 此处的faceshape和facetype需要自己加上去 更具自己需要的返回值
    
    params = urllib.parse.urlencode(params).encode("utf-8")
    
    
    access_token = '[24.3941b86dfcbc8eaea432d11df4f6660d.2592000.1542368987.282335-14255146]'
    request_url = request_url + "?access_token=" + access_token
    
    request = urllib.request.urlopen(url=request_url, data=params)   # 发送请求
    
    content = request.read()  # 将返回结果读取出来
    print(content)  # 显示返回结果
    
    
    import urllib.request,sys,base64
    import urllib.parse
    
    # 返回实例
    a = {'error_code': 0,
         'error_msg': 'SUCCESS',
         'log_id': 1011018945051,
         'timestamp': 1540301526,
         'cached': 0,
         'result': {'face_num': 1,
                    'face_list': [{'face_token': '80ed04e5e8771730b3fe240f8ead4e97',
                                   'location': {'left': 564.6082764,
                                                'top': 117.9681244,
                                                'width': 263,
                                                'height': 265,
                                                'rotation': 1},
                                   'face_probability': 1,
                                   'angle': {'yaw': -0.301689893,
                                             'pitch': -15.59528351,
                                             'roll': 0.9747127891
                                             }
                                   }
                                  ]
                    }
         }

    具体各种属性请看百度文档  https://ai.baidu.com/docs#/Face-Detect-V3/top

    介绍完人脸检测我们就可以进行人脸对比了

    import base64
    
    from aip import AipFace
    
    '''新建aipface的配置'''
    ''' 你的 app id ak sk '''
    AppId = '14255146'
    ApiKey = 'UoyrHmKFG3nGPL5HmDiGo80G'
    SecretKey = 'HUo1z36aDc1UxOwuS8d7Vxldh4GsQg8l'
    client = AipFace(AppId, ApiKey, SecretKey)
    
    
    f = open('./photo/huge.jpg', 'rb')
    image = base64.b64encode(f.read())
    image64 = str(image,'utf-8')
    image_type = "BASE64"
    print(client.detect(image64, image_type))  # 此处的返回值为人脸的基本检测的数值效果
    
    # print(strs)
    # 人脸检测
    # image = str(strs)  # 取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串
    
    imageType = "BASE64"
    
    groupIdList = "17ai_1"
    
    """ 调用人脸搜索 """
    
    
    print(client.search(str(image64), image_type, groupIdList))
    
    # 将返回对比结果
    
    '''
    """ 如果有可选参数 """
    options = {}
    options["quality_control"] = "NORMAL"
    options["liveness_control"] = "LOW"
    options["user_id"] = "233451"
    options["max_user_num"] = 3
    
    """ 带参数调用人脸搜索 """
    # print(client.search(image, imageType, , options))
    
    
    #  人脸搜索返回例子
    ''' 
    face = {
      "face_token": "fid",
      "user_list": [
         {
            "group_id": "test1",
            "user_id": "u333333",
            "user_info": "Test User",
            "score": 99.3
        }
      ]
    }
    转载至http://www.cnblogs.com/BookMiki/p/9844857.html
     
     
  • 相关阅读:
    【测试】模拟一个全表扫描的sql,对其进行优化走索引,并且将执行计划稳定到baseLine。
    【练习】手工生成awr报告
    【测试】数据文件的删除恢复
    【练习】行迁移和行链接
    织梦栏目列表页第一个文章与其他文章不同样式
    织梦联动筛选【单选版】-支持手机站使用
    织梦联动枚举字段无二级时去掉多余下拉
    织梦联动类型地区联动三级修复以及省份-市级-地区分开+高亮
    织梦联动枚举字段添加一级分类如果超过132个自动变成二级修复教程
    织梦后台自定义表单联动地区显示为数字的真正解决方法
  • 原文地址:https://www.cnblogs.com/aaronthon/p/10001930.html
Copyright © 2011-2022 走看看