百度AI图像处理(V3版本)—人脸识别(人脸检测)调用教程(基于Python3-附Demo)

首先来看一下识别的效果:这里需要完整代码以及SDK的请点击此处下载:百度人脸识别-人脸检测

首先需要注册百度账号并且创建对应的应用,这里具体方法如图:

访问:http://ai.baidu.com/  点击控制台

登录后创建应用:

  此处注意:图像处理中的各项功能共用的是一个SDK包,只是不同功能实现的时候使用的函数以及返回参数不同,点击完创建应用后就可以生成三个我们后期识别过程中必须使用的参数:AppID,API Key和secert key,这里我们可以点击查看应用详情来获取

 在这里,我们首先需要通过API Key和Secret Key来获取access_token,这里具体的代码为:

import urllib, urllib2, sys
import ssl

# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
request = urllib2.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib2.urlopen(request)
content = response.read()
if (content):
    print(content)

注意:这里很多读者会填写错AK(API Key)和SK(Secret Key),host填写完成后应该是这样的:

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&

然后,我们运行程序就可以获得返回值,返回值中的access_token就是我们需要获取的值了,这个值在后面实际进行人脸检测的时候需要用到:

 完成上述步骤之后,我们就可以进行实际的人脸操作过程了,首先贴上官方SDK给的代码(这些代码仅供参考,因为很多不符合Python3的标准,通知没有图片base64编码的过程),主要是让大家看一看一些官方的参数:

# encoding:utf-8
import urllib
import urllib2

'''
人脸检测与属性分析
'''

request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"


params = "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"FACE_TOKEN\",\"face_field\":\"faceshape,facetype\"}"

access_token = '[调用鉴权接口获取的token]'
request_url = request_url + "?access_token=" + access_token
request = urllib2.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/json')
response = urllib2.urlopen(request)
content = response.read()
if content:
    print content

这里,具体参数有:

参数 必选 类型 说明
image string 图片信息(总数据大小应小于10M),图片上传方式根据image_type来判断
image_type string 图片类型
BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;
URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);
FACE_TOKEN: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
face_field string 包括age,beauty,expression,face_shape,gender,glasses,landmark,race,quality,eye_status,emotion,face_type信息
逗号分隔. 默认只返回face_token、人脸框、概率和旋转角度
max_face_num uint32 最多处理人脸的数目,默认值为1,仅检测图片中面积最大的那个人脸;最大值10,检测图片中面积最大的几张人脸。
face_type string 人脸的类型
LIVE表示生活照:通常为手机、相机拍摄的人像图片、或从网络获取的人像图片等
IDCARD表示身份证芯片照:二代身份证内置芯片中的人像照片
WATERMARK表示带水印证件照:一般为带水印的小图,如公安网小图
CERT表示证件照片:如拍摄的身份证、工卡、护照、学生证等证件图片
默认LIVE

 我们在实际使用上可以根据我们的需要来调整参数,这里博主不再赘述,接下来附上博主的源码,相对于官方源码,主要进行了以下几个方面的改进:

1、符合Python3标准,修正了一些语句,比如import urllib2

2、增加了图片的base64编码,可以直接读取本地图片并进行编码

3、使用openCV框选人脸并对72个关键点进行描点,以方便直观的查看

具体代码如下:

# encoding:utf-8
import urllib.request
import cv2
import ast
import base64
import urllib.parse
from urllib.parse import urlencode

'''
人脸检测与属性分析
'''
#openCV导入图片
filename = 'test.png'
img = cv2.imread(filename)
#对图片进行base64编码
f = open(filename,'rb')
img_test = base64.b64encode(f.read())
#请求地址
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
#请求参数
params={'image':''+str(img_test,'utf-8')+'','image_type':'BASE64','face_field':'age,beauty,faceshape,gender,glasses,landmark'}
#对base64数据进行urlencode处理
params=urlencode(params)
#生成的access_token
access_token = '这里需要你自己填'
request_url = request_url + "?access_token=" + access_token
request = urllib.request.Request(url=request_url,data=params.encode("utf-8"))
request.add_header('Content-Type', 'application/json')
response = urllib.request.urlopen(request)
content = response.read()
if content:
    print(content)
content = content.decode("utf-8")
content = ast.literal_eval(content)
#描绘72个特征点部分
test_pic=content['result']['face_list'][0]['landmark72']
for x in test_pic:
    cv2.circle(img, (int(x['x']),int(x['y'])), 1, (255, 255, 0), 0,8)
#人脸框选部分
left_top = (int(content['result']['face_list'][0]['location']['left']), int(content['result']['face_list'][0]['location']['top']))
right_bottom = (int(left_top[0] + content['result']['face_list'][0]['location']['width']),int(left_top[1] + content['result']['face_list'][0]['location']['height']))
cv2.rectangle(img, left_top, right_bottom, (0, 0, 255), 2)
cv2.imshow('img', img)
cv2.waitKey(0)

 

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务