Python调用华为API实现人脸检测

1. 作者介绍

任瑞斌,男,西安工程大学电子信息学院,2021级研究生
研究方向:机器视觉与人工智能
电子邮件:[email protected]

吴燕子,女,西安工程大学电子信息学院,2021级研究生,张宏伟人工智能课题组
研究方向:人工智能与机器视觉
电子邮件:[email protected]

2. 华为人脸检测API

2.1 人脸检测

人脸检测是对输入图片进行人脸检测和分析,输出人脸在图像中的位置、人脸关键点位置和人脸关键属性。

2.2 约束限制

1、 只支持识别JPG、PNG、JPEG、BMP格式的图片。
2、 为保证识别效果,人脸图片建议要求如下:
a) 光照大于200lux、无反光强光阴影现象。
b) 人脸无遮挡、整体清晰无拖尾抖动等运动模糊。
c) 侧脸不超过30°、俯仰角小于15°、偏转角小于15°、图片中人脸保持竖置正脸。
3、由于过大图片对识别算法精度无明显提升,同时会导致时延较长,建议传入图片小于1MB,一般500KB左右足够。图片中人脸像素建议120*120以上。

3. 实验过程

3.1 获取API

1、注册华为云账号,进行实名认证,开通服务。
在这里插入图片描述
在这里插入图片描述
2、AK/SK认证,下载文件credentials.csv
登录人脸识别管理控制台。
单击页面右上角的用户名,并选择“我的凭证”。进入“我的凭证”页面。
在这里插入图片描述
单击“访问秘钥”页签下的“新增访问密钥”。弹出“新增访问密钥”对话框。
在这里插入图片描述
输入“登录密码”,如果绑定了手机或者邮箱,还需要获取验证码并进行验证。验证成功后,弹出访问密钥下载对话框。
单击“确定”,并根据提示下载保存访问密钥。
如果已生成过AK/SK,找到原来已下载的AK/SK文件,文件名一般为:credentials.csv。
在这里插入图片描述
3、在API Explorer中调试接口
在这里插入图片描述
本案例中使用base64的图片格式,python实现代码如上图所示。
attributes (人脸关键属性,比如头部姿态):2:年龄 4:装束(帽子、眼镜) 6:口罩 7:发型 8:胡须 11:图片类型 12:质量 13:表情 21:人脸图片旋转角(顺时针偏转角度),支持0°、90°、180°和270°图片旋转。

3.2 代码实现

#############下载需要的库
import base64
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkfrs.v2.region.frs_region import FrsRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkfrs.v2 import *
###############导入AK和SK
if __name__ == "__main__":
    ak = "输入获得的AK"
    sk = "输入获得的SK"  # ak和sk读取
    credentials = BasicCredentials(ak, sk) 

    client = FrsClient.new_builder() 
        .with_credentials(credentials) 
        .with_region(FrsRegion.value_of("cn-north-4"))     
        .build()

    f = open('C:\图片路径\图片名称.png', 'rb')   # 图片路径读取
    img = base64.b64encode(f.read())   # 图片转换为base64格式

    try:
        request = DetectFaceByBase64Request()  # 人脸在图像中的位置
        request.body = FaceDetectBase64Req(
          attributes="2,4,6,7,13",   # 人脸关键属性,比如头部姿态。
          image_base64=img)
        response = client.detect_face_by_base64(request)
        print(response)      # 输出结果
    except exceptions.ClientRequestException as e:  # 有误情况的输出
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

3.3 运行结果

输入图片:

在这里插入图片描述
输出结果包括以下3个部分:
1、 人脸在图片中的位置
在这里插入图片描述
2、 人脸的特征
在这里插入图片描述
3、 人脸的状态
在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>