Python调用华为API实现人脸检测
Posted ZHW_AI课题组
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python调用华为API实现人脸检测相关的知识,希望对你有一定的参考价值。
目录
1. 作者介绍
任瑞斌,男,西安工程大学电子信息学院,2021级研究生
研究方向:机器视觉与人工智能
电子邮件:1466166308@qq.com
吴燕子,女,西安工程大学电子信息学院,2021级研究生,张宏伟人工智能课题组
研究方向:人工智能与机器视觉
电子邮件:1219428323@qq.com
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、 人脸的状态
以上是关于Python调用华为API实现人脸检测的主要内容,如果未能解决你的问题,请参考以下文章