1. 前言
人脸检测是计算机视觉领域中的一项重要技术,可应用于人脸识别、人脸支付、安防监控等多个领域。而百度AI平台提供了人脸检测 API 接口,可以方便地通过编程实现人脸检测功能。本文将介绍如何使用 Golang 对接百度AI接口实现人脸检测功能。
2. 百度AI人脸检测 API
百度AI平台提供了多个人脸相关 API 接口,其中包括人脸检测、人脸比对、人脸识别等。而本文着重介绍人脸检测 API 接口。
2.1 人脸检测API接口说明
人脸检测 API 接口可以用于检测图片中的人脸位置,返回的结果包括人脸框位置、人脸关键点以及人脸品质等信息。
接口请求地址:https://aip.baidubce.com/rest/2.0/face/v3/detect
接口请求方式:POST
请求参数:
接口必需参数:
access_token:通过鉴权认证获取的访问令牌
image:待检测图片的二进制数据
image_type:图片类型。目前只支持 BASE64 编码的 JPG/JPEG/PNG 格式
接口可选参数:
face_field:包括哪些人脸信息,如在返回结果中显示年龄、性别、颜值等信息,可以选择多个信息将结果合并返回
max_face_num:最多处理人脸数目
face_type:人脸的种类。LIVE表示生活照,IDCARD表示身份证芯片照,WATERMARK表示带水印证件照。
接口返回结果 key 说明:
face_num:检测到的人脸数量
face_list:人脸信息列表,其中每个人脸的信息包括 face_token、location、face_probability 等字段
接口返回示例:
{
"face_num":1,
"face_list":[{
"face_token":"fid",
"location":{
"left":102.22,
"top":96.55333333333333,
"width":128,
"height":128,
"rotation":-1
},
"face_probability":1,
"angle":{
"yaw":9.06,
"pitch":3.22,
"roll":8.14
}
}]
}
3. 使用 Golang 对接百度AI人脸检测 API
使用 Golang 对接百度AI人脸检测 API 可以通过以下步骤实现。
3.1 获取 access_token
在请求人脸检测 API 之前,需要先获取 access_token 作为访问令牌。access_token 的获取可以通过调用百度AI平台的 OAuth2.0 授权认证服务实现。以下是获取 access_token 的示例:
package main
import (
"net/http"
"io/ioutil"
"encoding/json"
"fmt"
)
type AccessToken struct {
AccessToken string `json:"access_token"`
ExpiresIn int64 `json:"expires_in"`
}
func GetAccessToken(apiKey string, secretKey string) (string, error) {
url := fmt.Sprintf("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s", apiKey, secretKey)
resp, err := http.Get(url)
if err != nil {
return "", err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
var token AccessToken
err = json.Unmarshal(body, &token)
if err != nil {
return "", err
}
return token.AccessToken, nil
}
func main() {
apiKey := "yourApiKey"
secretKey := "yourSecretKey"
token, err := GetAccessToken(apiKey, secretKey)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(token)
}
注意:在使用以上代码之前,需要替换 apiKey 和 secretKey 为您自己的 API Key 和 Secret Key。
3.2 调用人脸检测 API
获取 access_token 后,即可调用人脸检测 API 实现人脸检测功能。以下是调用人脸检测 API 的示例代码:
package main
import (
"fmt"
"net/http"
"bytes"
"io/ioutil"
)
func main() {
url := "https://aip.baidubce.com/rest/2.0/face/v3/detect"
method := "POST"
// 获取的 access_token
accessToken := "yourAccessToken"
// 待检测图片的二进制数据
imageData := []byte{'yourImageData'}
// 构造请求参数
params := bytes.NewBuffer([]byte{})
params.WriteString(fmt.Sprintf("access_token=%s&", accessToken))
params.WriteString("image=")
params.Write(imageData)
params.WriteString("&image_type=BASE64")
// 发送请求
client := &http.Client{}
req, err := http.NewRequest(method, url, params)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
// 解析返回结果
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
注意:在使用以上代码之前,需要替换 accessToken 和 imageData 为您自己获取的 access_token 和待检测图片的二进制数据。
4. 总结
本文介绍了使用 Golang 对接百度AI人脸检测 API 的方法。通过引用百度AI平台提供的接口,可以方便地完成人脸检测功能的开发。