人脸识别SDK调用示例
引导式阅读
Go
人脸识别SDK调用示例
作者
c***r
上架时间
2023-11-17 06:54:42

人脸识别服务人脸识别示例(Go版本)

0.版本说明

本示例基于华为云SDK V3.0版本开发

1.简介

华为云提供了人脸识别服务端SDK,您可以直接集成服务端SDK来调用人脸识别服务的相关API,从而实现对人脸识别服务的快速操作。

该示例展示了如何通过Go版SDK实现人脸识别。

2.开发前准备

  • 注册 华为云,并完成 实名认证
  • 已订阅人脸识别服务。
  • 已具备开发环境,支持Go 1.14及其以上版本。
  • 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见 访问密钥
  • 已获取直播服务对应区域的项目ID,请在华为云控制台“我的凭证 > API凭证”页面上查看项目ID。具体请参见 API凭证

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() }

相关参数说明如下所示:

  • ak:华为云账号Access Key。
  • sk:华为云账号Secret Access Key 。

4.3 初始化人脸识别服务的客户端

func GetClient(auth basic.Credentials) *frs.FrsClient { return frs.NewFrsClient( frs.FrsClientBuilder(). WithRegion(region.CN_NORTH_4). WithCredential(auth). Build()) }

相关参数说明如下所示:

service region: 服务所在区域,例如:

  • CN_NORTH_1 北京一
  • CN_NORTH_4 北京四

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.修订记录

发布日期 文档版本 修订说明
2023-03-08 1.0 文档首次发布