gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/face_detection/v1/model.go (about)

     1  // Package face_detection code generated by oapi sdk gen
     2  /*
     3   * MIT License
     4   *
     5   * Copyright (c) 2022 Lark Technologies Pte. Ltd.
     6   *
     7   * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
     8   *
     9   * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
    10   *
    11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    12   */
    13  
    14  package larkface_detection
    15  
    16  import (
    17  	"gitee.com/larksuite/oapi-sdk-go/v3/core"
    18  )
    19  
    20  type AttributeItem struct {
    21  	Type        *int     `json:"type,omitempty"`        // 属性
    22  	Probability *float64 `json:"probability,omitempty"` // 识别置信度,[0, 1],代表判断正确的概率
    23  }
    24  
    25  type AttributeItemBuilder struct {
    26  	type_           int // 属性
    27  	typeFlag        bool
    28  	probability     float64 // 识别置信度,[0, 1],代表判断正确的概率
    29  	probabilityFlag bool
    30  }
    31  
    32  func NewAttributeItemBuilder() *AttributeItemBuilder {
    33  	builder := &AttributeItemBuilder{}
    34  	return builder
    35  }
    36  
    37  // 属性
    38  //
    39  // 示例值:0
    40  func (builder *AttributeItemBuilder) Type(type_ int) *AttributeItemBuilder {
    41  	builder.type_ = type_
    42  	builder.typeFlag = true
    43  	return builder
    44  }
    45  
    46  // 识别置信度,[0, 1],代表判断正确的概率
    47  //
    48  // 示例值:0.95566
    49  func (builder *AttributeItemBuilder) Probability(probability float64) *AttributeItemBuilder {
    50  	builder.probability = probability
    51  	builder.probabilityFlag = true
    52  	return builder
    53  }
    54  
    55  func (builder *AttributeItemBuilder) Build() *AttributeItem {
    56  	req := &AttributeItem{}
    57  	if builder.typeFlag {
    58  		req.Type = &builder.type_
    59  
    60  	}
    61  	if builder.probabilityFlag {
    62  		req.Probability = &builder.probability
    63  
    64  	}
    65  	return req
    66  }
    67  
    68  type FaceAttribute struct {
    69  	Gender  *AttributeItem `json:"gender,omitempty"`  // 性别信息:0 男性,1 女性
    70  	Age     *int           `json:"age,omitempty"`     // 年龄大小
    71  	Emotion *AttributeItem `json:"emotion,omitempty"` // 情绪:0 自然, 1 高兴,2 惊讶,3 害怕,4 悲伤,5 生气, 6 厌恶
    72  	Beauty  *int           `json:"beauty,omitempty"`  // 颜值打分:[0, 100]
    73  	Pose    *FacePose      `json:"pose,omitempty"`    // 人脸姿态
    74  	Hat     *AttributeItem `json:"hat,omitempty"`     // 帽子:0 未戴帽子,1 戴帽子
    75  	Glass   *AttributeItem `json:"glass,omitempty"`   // 眼镜:0 未戴眼镜,1 戴眼镜
    76  	Mask    *AttributeItem `json:"mask,omitempty"`    // 口罩:0 未戴口罩,1 戴口罩
    77  }
    78  
    79  type FaceAttributeBuilder struct {
    80  	gender      *AttributeItem // 性别信息:0 男性,1 女性
    81  	genderFlag  bool
    82  	age         int // 年龄大小
    83  	ageFlag     bool
    84  	emotion     *AttributeItem // 情绪:0 自然, 1 高兴,2 惊讶,3 害怕,4 悲伤,5 生气, 6 厌恶
    85  	emotionFlag bool
    86  	beauty      int // 颜值打分:[0, 100]
    87  	beautyFlag  bool
    88  	pose        *FacePose // 人脸姿态
    89  	poseFlag    bool
    90  	hat         *AttributeItem // 帽子:0 未戴帽子,1 戴帽子
    91  	hatFlag     bool
    92  	glass       *AttributeItem // 眼镜:0 未戴眼镜,1 戴眼镜
    93  	glassFlag   bool
    94  	mask        *AttributeItem // 口罩:0 未戴口罩,1 戴口罩
    95  	maskFlag    bool
    96  }
    97  
    98  func NewFaceAttributeBuilder() *FaceAttributeBuilder {
    99  	builder := &FaceAttributeBuilder{}
   100  	return builder
   101  }
   102  
   103  // 性别信息:0 男性,1 女性
   104  //
   105  // 示例值:
   106  func (builder *FaceAttributeBuilder) Gender(gender *AttributeItem) *FaceAttributeBuilder {
   107  	builder.gender = gender
   108  	builder.genderFlag = true
   109  	return builder
   110  }
   111  
   112  // 年龄大小
   113  //
   114  // 示例值:19
   115  func (builder *FaceAttributeBuilder) Age(age int) *FaceAttributeBuilder {
   116  	builder.age = age
   117  	builder.ageFlag = true
   118  	return builder
   119  }
   120  
   121  // 情绪:0 自然, 1 高兴,2 惊讶,3 害怕,4 悲伤,5 生气, 6 厌恶
   122  //
   123  // 示例值:
   124  func (builder *FaceAttributeBuilder) Emotion(emotion *AttributeItem) *FaceAttributeBuilder {
   125  	builder.emotion = emotion
   126  	builder.emotionFlag = true
   127  	return builder
   128  }
   129  
   130  // 颜值打分:[0, 100]
   131  //
   132  // 示例值:88
   133  func (builder *FaceAttributeBuilder) Beauty(beauty int) *FaceAttributeBuilder {
   134  	builder.beauty = beauty
   135  	builder.beautyFlag = true
   136  	return builder
   137  }
   138  
   139  // 人脸姿态
   140  //
   141  // 示例值:
   142  func (builder *FaceAttributeBuilder) Pose(pose *FacePose) *FaceAttributeBuilder {
   143  	builder.pose = pose
   144  	builder.poseFlag = true
   145  	return builder
   146  }
   147  
   148  // 帽子:0 未戴帽子,1 戴帽子
   149  //
   150  // 示例值:
   151  func (builder *FaceAttributeBuilder) Hat(hat *AttributeItem) *FaceAttributeBuilder {
   152  	builder.hat = hat
   153  	builder.hatFlag = true
   154  	return builder
   155  }
   156  
   157  // 眼镜:0 未戴眼镜,1 戴眼镜
   158  //
   159  // 示例值:
   160  func (builder *FaceAttributeBuilder) Glass(glass *AttributeItem) *FaceAttributeBuilder {
   161  	builder.glass = glass
   162  	builder.glassFlag = true
   163  	return builder
   164  }
   165  
   166  // 口罩:0 未戴口罩,1 戴口罩
   167  //
   168  // 示例值:
   169  func (builder *FaceAttributeBuilder) Mask(mask *AttributeItem) *FaceAttributeBuilder {
   170  	builder.mask = mask
   171  	builder.maskFlag = true
   172  	return builder
   173  }
   174  
   175  func (builder *FaceAttributeBuilder) Build() *FaceAttribute {
   176  	req := &FaceAttribute{}
   177  	if builder.genderFlag {
   178  		req.Gender = builder.gender
   179  	}
   180  	if builder.ageFlag {
   181  		req.Age = &builder.age
   182  
   183  	}
   184  	if builder.emotionFlag {
   185  		req.Emotion = builder.emotion
   186  	}
   187  	if builder.beautyFlag {
   188  		req.Beauty = &builder.beauty
   189  
   190  	}
   191  	if builder.poseFlag {
   192  		req.Pose = builder.pose
   193  	}
   194  	if builder.hatFlag {
   195  		req.Hat = builder.hat
   196  	}
   197  	if builder.glassFlag {
   198  		req.Glass = builder.glass
   199  	}
   200  	if builder.maskFlag {
   201  		req.Mask = builder.mask
   202  	}
   203  	return req
   204  }
   205  
   206  type FaceInfo struct {
   207  	Position  *FacePosition  `json:"position,omitempty"`  // 人脸位置信息
   208  	Attribute *FaceAttribute `json:"attribute,omitempty"` // 人脸属性信息
   209  	Quality   *FaceQuality   `json:"quality,omitempty"`   // 人脸质量信息
   210  }
   211  
   212  type FaceInfoBuilder struct {
   213  	position      *FacePosition // 人脸位置信息
   214  	positionFlag  bool
   215  	attribute     *FaceAttribute // 人脸属性信息
   216  	attributeFlag bool
   217  	quality       *FaceQuality // 人脸质量信息
   218  	qualityFlag   bool
   219  }
   220  
   221  func NewFaceInfoBuilder() *FaceInfoBuilder {
   222  	builder := &FaceInfoBuilder{}
   223  	return builder
   224  }
   225  
   226  // 人脸位置信息
   227  //
   228  // 示例值:
   229  func (builder *FaceInfoBuilder) Position(position *FacePosition) *FaceInfoBuilder {
   230  	builder.position = position
   231  	builder.positionFlag = true
   232  	return builder
   233  }
   234  
   235  // 人脸属性信息
   236  //
   237  // 示例值:
   238  func (builder *FaceInfoBuilder) Attribute(attribute *FaceAttribute) *FaceInfoBuilder {
   239  	builder.attribute = attribute
   240  	builder.attributeFlag = true
   241  	return builder
   242  }
   243  
   244  // 人脸质量信息
   245  //
   246  // 示例值:
   247  func (builder *FaceInfoBuilder) Quality(quality *FaceQuality) *FaceInfoBuilder {
   248  	builder.quality = quality
   249  	builder.qualityFlag = true
   250  	return builder
   251  }
   252  
   253  func (builder *FaceInfoBuilder) Build() *FaceInfo {
   254  	req := &FaceInfo{}
   255  	if builder.positionFlag {
   256  		req.Position = builder.position
   257  	}
   258  	if builder.attributeFlag {
   259  		req.Attribute = builder.attribute
   260  	}
   261  	if builder.qualityFlag {
   262  		req.Quality = builder.quality
   263  	}
   264  	return req
   265  }
   266  
   267  type FaceOcclude struct {
   268  	Eyebrow  *float64 `json:"eyebrow,omitempty"`   // 眉毛被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   269  	Nose     *float64 `json:"nose,omitempty"`      // 鼻子被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   270  	Cheek    *float64 `json:"cheek,omitempty"`     // 脸颊被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   271  	Mouth    *float64 `json:"mouth,omitempty"`     // 嘴被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   272  	Chin     *float64 `json:"chin,omitempty"`      // 下巴被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   273  	LeftEye  *float64 `json:"left_eye,omitempty"`  // 左眼睛被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   274  	RightEye *float64 `json:"right_eye,omitempty"` // 右眼睛被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   275  }
   276  
   277  type FaceOccludeBuilder struct {
   278  	eyebrow      float64 // 眉毛被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   279  	eyebrowFlag  bool
   280  	nose         float64 // 鼻子被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   281  	noseFlag     bool
   282  	cheek        float64 // 脸颊被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   283  	cheekFlag    bool
   284  	mouth        float64 // 嘴被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   285  	mouthFlag    bool
   286  	chin         float64 // 下巴被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   287  	chinFlag     bool
   288  	leftEye      float64 // 左眼睛被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   289  	leftEyeFlag  bool
   290  	rightEye     float64 // 右眼睛被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   291  	rightEyeFlag bool
   292  }
   293  
   294  func NewFaceOccludeBuilder() *FaceOccludeBuilder {
   295  	builder := &FaceOccludeBuilder{}
   296  	return builder
   297  }
   298  
   299  // 眉毛被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   300  //
   301  // 示例值:0.02345
   302  func (builder *FaceOccludeBuilder) Eyebrow(eyebrow float64) *FaceOccludeBuilder {
   303  	builder.eyebrow = eyebrow
   304  	builder.eyebrowFlag = true
   305  	return builder
   306  }
   307  
   308  // 鼻子被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   309  //
   310  // 示例值:0.99876
   311  func (builder *FaceOccludeBuilder) Nose(nose float64) *FaceOccludeBuilder {
   312  	builder.nose = nose
   313  	builder.noseFlag = true
   314  	return builder
   315  }
   316  
   317  // 脸颊被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   318  //
   319  // 示例值:0.88767
   320  func (builder *FaceOccludeBuilder) Cheek(cheek float64) *FaceOccludeBuilder {
   321  	builder.cheek = cheek
   322  	builder.cheekFlag = true
   323  	return builder
   324  }
   325  
   326  // 嘴被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   327  //
   328  // 示例值:0.45678
   329  func (builder *FaceOccludeBuilder) Mouth(mouth float64) *FaceOccludeBuilder {
   330  	builder.mouth = mouth
   331  	builder.mouthFlag = true
   332  	return builder
   333  }
   334  
   335  // 下巴被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   336  //
   337  // 示例值:0.66436
   338  func (builder *FaceOccludeBuilder) Chin(chin float64) *FaceOccludeBuilder {
   339  	builder.chin = chin
   340  	builder.chinFlag = true
   341  	return builder
   342  }
   343  
   344  // 左眼睛被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   345  //
   346  // 示例值:0.87699
   347  func (builder *FaceOccludeBuilder) LeftEye(leftEye float64) *FaceOccludeBuilder {
   348  	builder.leftEye = leftEye
   349  	builder.leftEyeFlag = true
   350  	return builder
   351  }
   352  
   353  // 右眼睛被遮挡情况:[0, 1] 值越大被遮挡的概率越高
   354  //
   355  // 示例值:0.78884
   356  func (builder *FaceOccludeBuilder) RightEye(rightEye float64) *FaceOccludeBuilder {
   357  	builder.rightEye = rightEye
   358  	builder.rightEyeFlag = true
   359  	return builder
   360  }
   361  
   362  func (builder *FaceOccludeBuilder) Build() *FaceOcclude {
   363  	req := &FaceOcclude{}
   364  	if builder.eyebrowFlag {
   365  		req.Eyebrow = &builder.eyebrow
   366  
   367  	}
   368  	if builder.noseFlag {
   369  		req.Nose = &builder.nose
   370  
   371  	}
   372  	if builder.cheekFlag {
   373  		req.Cheek = &builder.cheek
   374  
   375  	}
   376  	if builder.mouthFlag {
   377  		req.Mouth = &builder.mouth
   378  
   379  	}
   380  	if builder.chinFlag {
   381  		req.Chin = &builder.chin
   382  
   383  	}
   384  	if builder.leftEyeFlag {
   385  		req.LeftEye = &builder.leftEye
   386  
   387  	}
   388  	if builder.rightEyeFlag {
   389  		req.RightEye = &builder.rightEye
   390  
   391  	}
   392  	return req
   393  }
   394  
   395  type FacePose struct {
   396  	Pitch *int `json:"pitch,omitempty"` // 脸部上下偏移 [-90, 90]
   397  	Yaw   *int `json:"yaw,omitempty"`   // 脸部左右偏移 [-90, 90]
   398  	Roll  *int `json:"roll,omitempty"`  // 平面旋转 [-90, 90]
   399  }
   400  
   401  type FacePoseBuilder struct {
   402  	pitch     int // 脸部上下偏移 [-90, 90]
   403  	pitchFlag bool
   404  	yaw       int // 脸部左右偏移 [-90, 90]
   405  	yawFlag   bool
   406  	roll      int // 平面旋转 [-90, 90]
   407  	rollFlag  bool
   408  }
   409  
   410  func NewFacePoseBuilder() *FacePoseBuilder {
   411  	builder := &FacePoseBuilder{}
   412  	return builder
   413  }
   414  
   415  // 脸部上下偏移 [-90, 90]
   416  //
   417  // 示例值:-31
   418  func (builder *FacePoseBuilder) Pitch(pitch int) *FacePoseBuilder {
   419  	builder.pitch = pitch
   420  	builder.pitchFlag = true
   421  	return builder
   422  }
   423  
   424  // 脸部左右偏移 [-90, 90]
   425  //
   426  // 示例值:22
   427  func (builder *FacePoseBuilder) Yaw(yaw int) *FacePoseBuilder {
   428  	builder.yaw = yaw
   429  	builder.yawFlag = true
   430  	return builder
   431  }
   432  
   433  // 平面旋转 [-90, 90]
   434  //
   435  // 示例值:-32
   436  func (builder *FacePoseBuilder) Roll(roll int) *FacePoseBuilder {
   437  	builder.roll = roll
   438  	builder.rollFlag = true
   439  	return builder
   440  }
   441  
   442  func (builder *FacePoseBuilder) Build() *FacePose {
   443  	req := &FacePose{}
   444  	if builder.pitchFlag {
   445  		req.Pitch = &builder.pitch
   446  
   447  	}
   448  	if builder.yawFlag {
   449  		req.Yaw = &builder.yaw
   450  
   451  	}
   452  	if builder.rollFlag {
   453  		req.Roll = &builder.roll
   454  
   455  	}
   456  	return req
   457  }
   458  
   459  type FacePosition struct {
   460  	UpperLeft  *Point `json:"upper_left,omitempty"`  // 人脸框的左上角坐标
   461  	LowerRight *Point `json:"lower_right,omitempty"` // 人脸框的右下角坐标
   462  }
   463  
   464  type FacePositionBuilder struct {
   465  	upperLeft      *Point // 人脸框的左上角坐标
   466  	upperLeftFlag  bool
   467  	lowerRight     *Point // 人脸框的右下角坐标
   468  	lowerRightFlag bool
   469  }
   470  
   471  func NewFacePositionBuilder() *FacePositionBuilder {
   472  	builder := &FacePositionBuilder{}
   473  	return builder
   474  }
   475  
   476  // 人脸框的左上角坐标
   477  //
   478  // 示例值:
   479  func (builder *FacePositionBuilder) UpperLeft(upperLeft *Point) *FacePositionBuilder {
   480  	builder.upperLeft = upperLeft
   481  	builder.upperLeftFlag = true
   482  	return builder
   483  }
   484  
   485  // 人脸框的右下角坐标
   486  //
   487  // 示例值:
   488  func (builder *FacePositionBuilder) LowerRight(lowerRight *Point) *FacePositionBuilder {
   489  	builder.lowerRight = lowerRight
   490  	builder.lowerRightFlag = true
   491  	return builder
   492  }
   493  
   494  func (builder *FacePositionBuilder) Build() *FacePosition {
   495  	req := &FacePosition{}
   496  	if builder.upperLeftFlag {
   497  		req.UpperLeft = builder.upperLeft
   498  	}
   499  	if builder.lowerRightFlag {
   500  		req.LowerRight = builder.lowerRight
   501  	}
   502  	return req
   503  }
   504  
   505  type FaceQuality struct {
   506  	Sharpness  *float64     `json:"sharpness,omitempty"`  // 清晰度,值越高越清晰
   507  	Brightness *float64     `json:"brightness,omitempty"` // 亮度
   508  	Occlude    *FaceOcclude `json:"occlude,omitempty"`    // 面部遮挡属性
   509  }
   510  
   511  type FaceQualityBuilder struct {
   512  	sharpness      float64 // 清晰度,值越高越清晰
   513  	sharpnessFlag  bool
   514  	brightness     float64 // 亮度
   515  	brightnessFlag bool
   516  	occlude        *FaceOcclude // 面部遮挡属性
   517  	occludeFlag    bool
   518  }
   519  
   520  func NewFaceQualityBuilder() *FaceQualityBuilder {
   521  	builder := &FaceQualityBuilder{}
   522  	return builder
   523  }
   524  
   525  // 清晰度,值越高越清晰
   526  //
   527  // 示例值:0.77
   528  func (builder *FaceQualityBuilder) Sharpness(sharpness float64) *FaceQualityBuilder {
   529  	builder.sharpness = sharpness
   530  	builder.sharpnessFlag = true
   531  	return builder
   532  }
   533  
   534  // 亮度
   535  //
   536  // 示例值:0.6
   537  func (builder *FaceQualityBuilder) Brightness(brightness float64) *FaceQualityBuilder {
   538  	builder.brightness = brightness
   539  	builder.brightnessFlag = true
   540  	return builder
   541  }
   542  
   543  // 面部遮挡属性
   544  //
   545  // 示例值:
   546  func (builder *FaceQualityBuilder) Occlude(occlude *FaceOcclude) *FaceQualityBuilder {
   547  	builder.occlude = occlude
   548  	builder.occludeFlag = true
   549  	return builder
   550  }
   551  
   552  func (builder *FaceQualityBuilder) Build() *FaceQuality {
   553  	req := &FaceQuality{}
   554  	if builder.sharpnessFlag {
   555  		req.Sharpness = &builder.sharpness
   556  
   557  	}
   558  	if builder.brightnessFlag {
   559  		req.Brightness = &builder.brightness
   560  
   561  	}
   562  	if builder.occludeFlag {
   563  		req.Occlude = builder.occlude
   564  	}
   565  	return req
   566  }
   567  
   568  type Image struct {
   569  	Width  *int `json:"width,omitempty"`  // 图片的宽度
   570  	Height *int `json:"height,omitempty"` // 图片的高度
   571  }
   572  
   573  type ImageBuilder struct {
   574  	width      int // 图片的宽度
   575  	widthFlag  bool
   576  	height     int // 图片的高度
   577  	heightFlag bool
   578  }
   579  
   580  func NewImageBuilder() *ImageBuilder {
   581  	builder := &ImageBuilder{}
   582  	return builder
   583  }
   584  
   585  // 图片的宽度
   586  //
   587  // 示例值:400
   588  func (builder *ImageBuilder) Width(width int) *ImageBuilder {
   589  	builder.width = width
   590  	builder.widthFlag = true
   591  	return builder
   592  }
   593  
   594  // 图片的高度
   595  //
   596  // 示例值:500
   597  func (builder *ImageBuilder) Height(height int) *ImageBuilder {
   598  	builder.height = height
   599  	builder.heightFlag = true
   600  	return builder
   601  }
   602  
   603  func (builder *ImageBuilder) Build() *Image {
   604  	req := &Image{}
   605  	if builder.widthFlag {
   606  		req.Width = &builder.width
   607  
   608  	}
   609  	if builder.heightFlag {
   610  		req.Height = &builder.height
   611  
   612  	}
   613  	return req
   614  }
   615  
   616  type Point struct {
   617  	X *float64 `json:"x,omitempty"` // 横轴坐标
   618  	Y *float64 `json:"y,omitempty"` // 纵轴坐标
   619  }
   620  
   621  type PointBuilder struct {
   622  	x     float64 // 横轴坐标
   623  	xFlag bool
   624  	y     float64 // 纵轴坐标
   625  	yFlag bool
   626  }
   627  
   628  func NewPointBuilder() *PointBuilder {
   629  	builder := &PointBuilder{}
   630  	return builder
   631  }
   632  
   633  // 横轴坐标
   634  //
   635  // 示例值:200
   636  func (builder *PointBuilder) X(x float64) *PointBuilder {
   637  	builder.x = x
   638  	builder.xFlag = true
   639  	return builder
   640  }
   641  
   642  // 纵轴坐标
   643  //
   644  // 示例值:200
   645  func (builder *PointBuilder) Y(y float64) *PointBuilder {
   646  	builder.y = y
   647  	builder.yFlag = true
   648  	return builder
   649  }
   650  
   651  func (builder *PointBuilder) Build() *Point {
   652  	req := &Point{}
   653  	if builder.xFlag {
   654  		req.X = &builder.x
   655  
   656  	}
   657  	if builder.yFlag {
   658  		req.Y = &builder.y
   659  
   660  	}
   661  	return req
   662  }
   663  
   664  type DetectFaceAttributesImageReqBodyBuilder struct {
   665  	image     string // 图片 base64 数据
   666  	imageFlag bool
   667  }
   668  
   669  func NewDetectFaceAttributesImageReqBodyBuilder() *DetectFaceAttributesImageReqBodyBuilder {
   670  	builder := &DetectFaceAttributesImageReqBodyBuilder{}
   671  	return builder
   672  }
   673  
   674  // 图片 base64 数据
   675  //
   676  //示例值:图片 base64 后的字符串
   677  func (builder *DetectFaceAttributesImageReqBodyBuilder) Image(image string) *DetectFaceAttributesImageReqBodyBuilder {
   678  	builder.image = image
   679  	builder.imageFlag = true
   680  	return builder
   681  }
   682  
   683  func (builder *DetectFaceAttributesImageReqBodyBuilder) Build() *DetectFaceAttributesImageReqBody {
   684  	req := &DetectFaceAttributesImageReqBody{}
   685  	if builder.imageFlag {
   686  		req.Image = &builder.image
   687  	}
   688  	return req
   689  }
   690  
   691  type DetectFaceAttributesImagePathReqBodyBuilder struct {
   692  	image     string // 图片 base64 数据
   693  	imageFlag bool
   694  }
   695  
   696  func NewDetectFaceAttributesImagePathReqBodyBuilder() *DetectFaceAttributesImagePathReqBodyBuilder {
   697  	builder := &DetectFaceAttributesImagePathReqBodyBuilder{}
   698  	return builder
   699  }
   700  
   701  // 图片 base64 数据
   702  //
   703  // 示例值:图片 base64 后的字符串
   704  func (builder *DetectFaceAttributesImagePathReqBodyBuilder) Image(image string) *DetectFaceAttributesImagePathReqBodyBuilder {
   705  	builder.image = image
   706  	builder.imageFlag = true
   707  	return builder
   708  }
   709  
   710  func (builder *DetectFaceAttributesImagePathReqBodyBuilder) Build() (*DetectFaceAttributesImageReqBody, error) {
   711  	req := &DetectFaceAttributesImageReqBody{}
   712  	if builder.imageFlag {
   713  		req.Image = &builder.image
   714  	}
   715  	return req, nil
   716  }
   717  
   718  type DetectFaceAttributesImageReqBuilder struct {
   719  	apiReq *larkcore.ApiReq
   720  	body   *DetectFaceAttributesImageReqBody
   721  }
   722  
   723  func NewDetectFaceAttributesImageReqBuilder() *DetectFaceAttributesImageReqBuilder {
   724  	builder := &DetectFaceAttributesImageReqBuilder{}
   725  	builder.apiReq = &larkcore.ApiReq{
   726  		PathParams:  larkcore.PathParams{},
   727  		QueryParams: larkcore.QueryParams{},
   728  	}
   729  	return builder
   730  }
   731  
   732  // 检测图片中的人脸属性和质量等信息
   733  func (builder *DetectFaceAttributesImageReqBuilder) Body(body *DetectFaceAttributesImageReqBody) *DetectFaceAttributesImageReqBuilder {
   734  	builder.body = body
   735  	return builder
   736  }
   737  
   738  func (builder *DetectFaceAttributesImageReqBuilder) Build() *DetectFaceAttributesImageReq {
   739  	req := &DetectFaceAttributesImageReq{}
   740  	req.apiReq = &larkcore.ApiReq{}
   741  	req.apiReq.Body = builder.body
   742  	return req
   743  }
   744  
   745  type DetectFaceAttributesImageReqBody struct {
   746  	Image *string `json:"image,omitempty"` // 图片 base64 数据
   747  }
   748  
   749  type DetectFaceAttributesImageReq struct {
   750  	apiReq *larkcore.ApiReq
   751  	Body   *DetectFaceAttributesImageReqBody `body:""`
   752  }
   753  
   754  type DetectFaceAttributesImageRespData struct {
   755  	ImageInfo *Image      `json:"image_info,omitempty"` // 图片信息
   756  	FaceInfos []*FaceInfo `json:"face_infos,omitempty"` // 人脸信息列表
   757  }
   758  
   759  type DetectFaceAttributesImageResp struct {
   760  	*larkcore.ApiResp `json:"-"`
   761  	larkcore.CodeError
   762  	Data *DetectFaceAttributesImageRespData `json:"data"` // 业务数据
   763  }
   764  
   765  func (resp *DetectFaceAttributesImageResp) Success() bool {
   766  	return resp.Code == 0
   767  }