5. SDK demo代码解析
5.1 人脸检测
Copied!
request := &model.DetectFaceByBase64Request{}
attributesFaceDetectBase64Req := "2,4"
request.Body = &model.FaceDetectBase64Req{
Attributes: &attributesFaceDetectBase64Req,
ImageBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD...",
}
response, err := client.DetectFaceByBase64(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.2 人脸比对
Copied!
request := &model.CompareFaceByBase64Request{}
request.Body = &model.FaceCompareBase64Req{
Image1Base64: "/9j/4AAQSkZJRgABAQAAAQABAAD...",
Image2Base64: "/9j/4AAQSkZJRgABAQAAAQABAAD...",
}
response, err := client.CompareFaceByBase64(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.3 人脸搜索
Copied!
request := &model.SearchFaceByBase64Request{}
request.FaceSetName = "face_set_name"
var listReturnFieldsbody = []string{
"timestamp",
"id",
}
request.Body = &model.FaceSearchBase64Req{
ReturnFields: &listReturnFieldsbody,
ImageBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD...",
}
response, err := client.SearchFaceByBase64(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.4 创建人脸库
Copied!
request := &model.CreateFaceSetRequest{}
request.Body = &model.CreateFaceSetReq{
FaceSetName: "face_set_name",
}
response, err := client.CreateFaceSet(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.5 查询人脸库
Copied!
request := &model.ShowFaceSetRequest{}
request.FaceSetName = "face_set_name"
response, err := client.ShowFaceSet(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.6 查询所有人脸库
Copied!
request := &model.ShowAllFaceSetsRequest{}
response, err := client.ShowAllFaceSets(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.7 删除人脸库
Copied!
request := &model.DeleteFaceSetRequest{}
request.FaceSetName = "face_set_name"
response, err := client.DeleteFaceSet(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.8 添加人脸
Copied!
request := &model.AddFacesByBase64Request{}
request.FaceSetName = "face_set_name"
var externalFieldsAddFacesBase64Req interface{} = "{\"timestamp\":12}"
request.Body = &model.AddFacesBase64Req{
ExternalFields: &externalFieldsAddFacesBase64Req,
ImageBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD...",
}
response, err := client.AddFacesByBase64(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.9 删除人脸
Copied!
request := &model.DeleteFaceByExternalImageIdRequest{}
request.FaceSetName = "face_set_name"
request.ExternalImageId = "external_image_id"
response, err := client.DeleteFaceByExternalImageId(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.10 批量删除人脸
Copied!
request := &model.BatchDeleteFacesRequest{}
request.FaceSetName = "face_set_name"
request.Body = &model.DeleteFacesBatchReq{
Filter: "age:[20 TO 30]",
}
response, err := client.BatchDeleteFaces(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.11 更新人脸
Copied!
request := &model.UpdateFaceRequest{}
request.FaceSetName = "face_set_name"
externalImageIdUpdateFaceReq:= "external_image_id"
var externalFieldsUpdateFaceReq interface{} = "{\"timestamp\":12}"
request.Body = &model.UpdateFaceReq{
FaceId: "LkPJblq6",
ExternalImageId: &externalImageIdUpdateFaceReq,
ExternalFields: &externalFieldsUpdateFaceReq,
}
response, err := client.UpdateFace(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.12 查询人脸
Copied!
request := &model.ShowFacesByFaceIdRequest{}
request.FaceSetName = "face_set_name"
request.FaceId = "LkPJblq6"
response, err := client.ShowFacesByFaceId(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.13 活体检测
5.13.1 动作活体检测
Copied!
request := &model.DetectLiveByBase64Request{}
request.Body = &model.LiveDetectBase64Req{
Actions: "1,2,3,4",
VideoBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD...",
}
response, err := client.DetectLiveByBase64(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
5.13.2 静默活体检测
Copied!
request := &model.DetectLiveFaceByBase64Request{}
request.Body = &model.LiveDetectFaceBase64Req{
ImageBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD...",
}
response, err := client.DetectLiveFaceByBase64(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
人脸识别服务人脸识别示例(Go版本)
0.版本说明
本示例基于华为云SDK V3.0版本开发
1.简介
华为云提供了人脸识别服务端SDK,您可以直接集成服务端SDK来调用人脸识别服务的相关API,从而实现对人脸识别服务的快速操作。
该示例展示了如何通过Go版SDK实现人脸识别。
2.开发前准备
3.安装SDK
# 安装华为云Go库 go get -u github.com/huaweicloud/huaweicloud-sdk-go-v3 # 安装依赖 go get github.com/json-iterator/go
4. 开始使用
4.1 导入依赖模块
import ( "fmt" "os" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" //v2版本sdk frs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/frs/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/frs/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/frs/v2/region" )
4.2 初始化认证信息
func GetCredential(ak, sk string) basic.Credentials { // Init Auth Info return basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() }
相关参数说明如下所示:
4.3 初始化人脸识别服务的客户端
func GetClient(auth basic.Credentials) *frs.FrsClient { return frs.NewFrsClient( frs.FrsClientBuilder(). WithRegion(region.CN_NORTH_4). WithCredential(auth). Build()) }
相关参数说明如下所示:
service region: 服务所在区域,例如:
5. SDK demo代码解析
5.1 人脸检测
request := &model.DetectFaceByBase64Request{} attributesFaceDetectBase64Req := "2,4" request.Body = &model.FaceDetectBase64Req{ Attributes: &attributesFaceDetectBase64Req, ImageBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD...", } response, err := client.DetectFaceByBase64(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.2 人脸比对
request := &model.CompareFaceByBase64Request{} request.Body = &model.FaceCompareBase64Req{ Image1Base64: "/9j/4AAQSkZJRgABAQAAAQABAAD...", Image2Base64: "/9j/4AAQSkZJRgABAQAAAQABAAD...", } response, err := client.CompareFaceByBase64(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.3 人脸搜索
request := &model.SearchFaceByBase64Request{} request.FaceSetName = "face_set_name" var listReturnFieldsbody = []string{ "timestamp", "id", } request.Body = &model.FaceSearchBase64Req{ ReturnFields: &listReturnFieldsbody, ImageBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD...", } response, err := client.SearchFaceByBase64(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.4 创建人脸库
request := &model.CreateFaceSetRequest{} request.Body = &model.CreateFaceSetReq{ FaceSetName: "face_set_name", } response, err := client.CreateFaceSet(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.5 查询人脸库
request := &model.ShowFaceSetRequest{} request.FaceSetName = "face_set_name" response, err := client.ShowFaceSet(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.6 查询所有人脸库
request := &model.ShowAllFaceSetsRequest{} response, err := client.ShowAllFaceSets(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.7 删除人脸库
request := &model.DeleteFaceSetRequest{} request.FaceSetName = "face_set_name" response, err := client.DeleteFaceSet(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.8 添加人脸
request := &model.AddFacesByBase64Request{} request.FaceSetName = "face_set_name" var externalFieldsAddFacesBase64Req interface{} = "{\"timestamp\":12}" request.Body = &model.AddFacesBase64Req{ ExternalFields: &externalFieldsAddFacesBase64Req, ImageBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD...", } response, err := client.AddFacesByBase64(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.9 删除人脸
request := &model.DeleteFaceByExternalImageIdRequest{} request.FaceSetName = "face_set_name" request.ExternalImageId = "external_image_id" response, err := client.DeleteFaceByExternalImageId(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.10 批量删除人脸
request := &model.BatchDeleteFacesRequest{} request.FaceSetName = "face_set_name" request.Body = &model.DeleteFacesBatchReq{ Filter: "age:[20 TO 30]", } response, err := client.BatchDeleteFaces(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.11 更新人脸
request := &model.UpdateFaceRequest{} request.FaceSetName = "face_set_name" externalImageIdUpdateFaceReq:= "external_image_id" var externalFieldsUpdateFaceReq interface{} = "{\"timestamp\":12}" request.Body = &model.UpdateFaceReq{ FaceId: "LkPJblq6", ExternalImageId: &externalImageIdUpdateFaceReq, ExternalFields: &externalFieldsUpdateFaceReq, } response, err := client.UpdateFace(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.12 查询人脸
//Show Faces By FaceId request := &model.ShowFacesByFaceIdRequest{} request.FaceSetName = "face_set_name" request.FaceId = "LkPJblq6" response, err := client.ShowFacesByFaceId(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.13 活体检测
5.13.1 动作活体检测
//detect live by base64 request := &model.DetectLiveByBase64Request{} request.Body = &model.LiveDetectBase64Req{ Actions: "1,2,3,4", VideoBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD...", } response, err := client.DetectLiveByBase64(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
5.13.2 静默活体检测
//detect live face by base64 request := &model.DetectLiveFaceByBase64Request{} request.Body = &model.LiveDetectFaceBase64Req{ ImageBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD...", } response, err := client.DetectLiveFaceByBase64(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
6.参考
更多信息请参考人脸识别服务
7.修订记录