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 }