人脸识别服务 FRS-Go SDK:SDK demo代码解析

时间:2024-05-14 09:24:37

SDK demo代码解析

  • 人脸检测
    // detect face by base64
    request := &model.DetectFaceByBase64Request{}
    attributesFaceDetectBase64Req := "2"
    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)
    }
    
    // detect face by file
    file, err := os.Open("/root/picture.jpg")
    if err != nil {
       fmt.Println(err)
    }
    defer file.Close()
    request := &model.DetectFaceByFileRequest{}
    request.Body = &model.DetectFaceByFileRequestBody{
       Attributes: def.NewMultiPart(attributes),
       ImageFile:  def.NewFilePart(file),
    }
    response, err := client.DetectFaceByFile(request)
    if err == nil {
       fmt.Printf("%+v\n", response)
    } else {
       fmt.Println(err)
    }
  • 人脸比对
    // compare face by base64
    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)
    }
    
    // compare face by file
    file1, err := os.Open("/root/picture1.jpg")
    if err != nil {
       fmt.Println(err)
    }
    defer file1.Close()
    file2, err := os.Open("/root/picture2.jpg")
    if err != nil {
       fmt.Println(err)
    }
    defer file2.Close()
    request := &model.CompareFaceByFileRequest{}
    request.Body = &model.CompareFaceByFileRequestBody{
       Image1File: def.NewFilePart(file1),
       Image2File: def.NewFilePart(file2),
    }
    response, err := client.CompareFaceByFile(request)
    if err == nil {
       fmt.Printf("%+v\n", response)
    } else {
       fmt.Println(err)
    }
  • 人脸搜索
    // face search by base64
    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)
    }
    
    // face search by file
    file, err := os.Open("/root/picture.jpg")
    if err != nil {
       fmt.Println(err)
    }
    defer file.Close()
    request := &model.SearchFaceByFileRequest{}
    request.FaceSetName = "face_set_name"
    request.Body = &model.SearchFaceByFileRequestBody{
       ReturnFields: def.NewMultiPart("[\"timestamp\"]"),
       Filter:       def.NewMultiPart("timestamp:10"),
       ImageFile:    def.NewFilePart(file),
    }
    response, err := client.SearchFaceByFile(request)
    if err == nil {
       fmt.Printf("%+v\n", response)
    } else {
       fmt.Println(err)
    }
  • 创建人脸库
    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)
    }
  • 查询人脸库
    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)
    }
  • 查询所有人脸库
    request := &model.ShowAllFaceSetsRequest{}
    response, err := client.ShowAllFaceSets(request)
    if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
  • 删除人脸库
    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)
    }
  • 添加人脸
    // add face by base64
    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)
    }
    
    // add face by file
    file, err := os.Open("/root/picture.jpg")
    if err != nil {
       fmt.Println(err)
    }
    defer file.Close()
    request := &model.AddFacesByFileRequest{}
    request.FaceSetName = "face_set_name"
    request.Body = &model.AddFacesByFileRequestBody{
       ExternalFields: def.NewMultiPart("{\"timestamp\":100}"),
       ImageFile:      def.NewFilePart(file),
    }
    response, err := client.AddFacesByFile(request)
    if err == nil {
       fmt.Printf("%+v\n", response)
    } else {
       fmt.Println(err)
    }
  • 删除人脸
    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)
    }
  • 批量删除人脸
    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)
    }
  • 更新人脸
    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)
    }
  • 查询人脸
    //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)
    }
  • 动作活体检测
    //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)
    }
    
    //detect live by file
    file, err := os.Open("/root/video.mp4")
    if err != nil {
       fmt.Println(err)
    }
    defer file.Close()
    request := &model.DetectLiveByFileRequest{}
    request.Body = &model.DetectLiveByFileRequestBody{
       Actions:   def.NewMultiPart(action),
       VideoFile: def.NewFilePart(file),
    }
    response, err := client.DetectLiveByFile(request)
    if err == nil {
       fmt.Printf("%+v\n", response)
    } else {
       fmt.Println(err)
    }
  • 静默活体检测
    //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)
    }
    
    //detect live face by file
    file, err := os.Open("/root/picture.jpg")
    if err != nil {
       fmt.Println(err)
    }
    defer file.Close()
    request := &model.DetectLiveFaceByFileRequest{}
    request.Body = &model.DetectLiveFaceByFileRequestBody{
       ImageFile: def.NewFilePart(file),
    }
    response, err := client.DetectLiveFaceByFile(request)
    if err == nil {
       fmt.Printf("%+v\n", response)
    } else {
       fmt.Println(err)
    }
support.huaweicloud.com/sdkreference-face/face_04_0022.html