Python利用百度AI平台实现人脸识别

前言

百度AI平台提供的接口十分丰富,对于做项目来说,百度是一个很好的开放平台。本文利用百度提供的接口来实现人脸识别,而且可以无限制调用。博客参考人脸识别-Python-SDK

实现步骤

  1. 安装baidu-aip模块
  2. 获取百度AI接口密钥
  3. 调用百度接口识别人脸

详细步骤

一、安装baidu-aip模块
按win+R打开cmd,在里面输入

pip3 install baidu-aip

若出现如下界面,即成功安装了baidu-aip模块:
Python利用百度AI平台实现人脸识别_第1张图片
二、获取百度AI接口密钥
首先,进入如下百度AI官方网站:

https://ai.baidu.com/tech/ocr

有百度账户的输入账户密码进行登录,没有的点击注册,按指示输入相关信息即可注册登录。
Python利用百度AI平台实现人脸识别_第2张图片
登录后找到开放能力的功能列表,下方有人脸与人体识别内容,点击人脸对比了解详情。
Python利用百度AI平台实现人脸识别_第3张图片

可以发现可实现如下功能,
Python利用百度AI平台实现人脸识别_第4张图片
点击立即使用
Python利用百度AI平台实现人脸识别_第5张图片

就会出现如下服务协议:
Python利用百度AI平台实现人脸识别_第6张图片
点击我已同意百度AI开放平台服务协议,就可以进入如下界面:
Python利用百度AI平台实现人脸识别_第7张图片
下滑根据需求点击领取免费资源。
Python利用百度AI平台实现人脸识别_第8张图片
点击概览中的创建应用
Python利用百度AI平台实现人脸识别_第9张图片
实名认证过程就不演示了
Python利用百度AI平台实现人脸识别_第10张图片
实名认证后点击0元领取
Python利用百度AI平台实现人脸识别_第11张图片

创建成功后即可获得AppID、API Key、Secret Key,以及可查看操作内容和添加人脸库。
Python利用百度AI平台实现人脸识别_第12张图片
接下来查阅官网文档进行操作
Python利用百度AI平台实现人脸识别_第13张图片

核心代码如下

请求URL数据格式

 # encoding:utf-8
import requests 

# 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】'
response = requests.get(host)
if response:
    print(response.json())

图片转换
百度Aip支持的图片格式是base64,因此我们要将图片转换为base64格式。图片类型 BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M

data = 'image.jpg'
data = base64.b64encode(img_data)
image = data.decode()
imageType = "BASE64"

调用人脸对比

# encoding:utf-8

import requests

'''
人脸对比
'''

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

params = "[{\"image\": \"sfasq35sadvsvqwr5q...\", \"image_type\": \"BASE64\", \"face_type\": \"LIVE\", \"quality_control\": \"LOW\"},
 {\"image\": \"sfasq35sadvsvqwr5q...\", \"image_type\": \"BASE64\", \"face_type\": \"IDCARD\", \"quality_control\": \"LOW\"}]"
access_token = '[调用鉴权接口获取的token]'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/json'}
response = requests.post(request_url, json=params, headers=headers)
if response:
    print (response.json())

返回示例

{
    "score": 44.3,
    "face_list": [  //返回的顺序与传入的顺序保持一致
        {
            "face_token": "fid1"
        },
        {
            "face_token": "fid2"
        }
    ]
}

Python利用百度AI平台实现人脸识别_第14张图片

提前准备两张图片
Python利用百度AI平台实现人脸识别_第15张图片
Python利用百度AI平台实现人脸识别_第16张图片

示例程序

import requests
import base64
import json
from get_access_token import get_access_token
'''
人脸对比
'''
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/match"

# 二进制方式打开图片文件
f1 = open('img/1608205456.png', 'rb')
img1 = base64.b64encode(f1.read())        # base64编码
# print(img1)
f2 = open('img/p1.png', 'rb')
img2 = base64.b64encode(f2.read())        # base64编码
# print(img2)
params = json.dumps([
    {
        "image": str(img1, 'utf-8'),           # b --> str
        "image_type": "BASE64",
        "face_type": "LIVE",
        "quality_control": "LOW"
    },
    {
        "image": str(img2, 'utf-8'),
        "image_type": "BASE64",
        "face_type": "LIVE",
        "quality_control": "LOW"
    }
])
# print(params, type(params))
access_token = get_access_token("ZL9fe59R8G3ShQZv8qlWNgwK", "Kc5YyfVcp83yPKEyuMxBVfFOhr5hAAdr")
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/json'}
response = requests.post(request_url, data=params, headers=headers)
if response:
    print(response.json()['result']['score'])
    if response.json()['result']['score'] > 95:
        print("same")

运行结果
在这里插入图片描述
至此,调用百度接口人脸对比已讲解完毕,在此基础上加上PC摄像头可进行人脸登录设计。感兴趣的朋友自己实现吧。

你可能感兴趣的:(人生苦短-我用Python,python)