sdk

package module
v0.0.0-...-2dcafea Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2018 License: MIT Imports: 7 Imported by: 0

README

face-golang-sdk

face++的golang版 sdk

示例清参考 examples 文件夹

也可以参考小程序人脸登录服务端https://github.com/shiguanghuxian/face-login

示例:

	// 创建一个sdk对象
	faceSDK, err := sdk.NewFaceSDK(APIKey, APISecret)
	log.Println(err)
	// 创建人脸检测对象
	detect, err := faceSDK.Detect()
	log.Println(err)
	// 设置参数
	dr, body, err := detect.SetImage("./demo.jpg", "image_file").
		SetOption("return_attributes", "gender,age,smiling,headpose,facequality,blur,eyestatus,emotion,ethnicity,beauty,mouthstatus,eyegaze,skinstatus").
		SetOption("return_landmark", 1).
		End()

	log.Println(err)
	log.Println(body)
	js, _ := json.Marshal(dr)
	log.Println(string(js))
	log.Println("年龄:", dr.Faces[0].Attributes.Age.Value)

Documentation

Index

Constants

View Source
const (
	APIBaseURL = "https://api-cn.faceplusplus.com/facepp/v3"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Attributes

type Attributes struct {
	Gender struct {
		Value string `json:"value"` // 性别值
	} `json:"gender"` // 性别 Male男|Female女
	Age struct {
		Value int `json:"value"` // 年龄值
	} `json:"age"` // 年龄分析结果。返回值为一个非负整数
	Smile struct {
		Value     float32 `json:"value"`     // 值为一个 [0,100] 的浮点数,小数点后3位有效数字。数值越大表示笑程度高
		Threshold float32 `json:"threshold"` // 代表笑容的阈值,超过该阈值认为有笑容
	} `json:"smile"` // 笑容分析结果
	Headpose struct {
		PitchAngle float64 `json:"pitch_angle"` // 抬头
		RollAngle  float64 `json:"roll_angle"`  // 旋转(平面旋转)
		YawAngle   float64 `json:"yaw_angle"`   // 摇头
	} `json:"headpose"` // 人脸姿势分析结果
	Eyestatus struct {
		LeftEyeStatus  map[string]float32 `json:"left_eye_status"`  // 左眼的状态
		RightEyeStatus map[string]float32 `json:"right_eye_status"` // 右眼的状态
	} `json:"eyestatus"` // 眼睛状态信息
	Emotion     map[string]float32 `json:"emotion"` // 情绪识别结果, map下标对应值 anger|愤怒 disgust|厌恶 fear|恐惧 happiness|高兴 neutral|平静 sadness|伤心 surprise|惊讶
	Facequality struct {
		Value     float32 `json:"value"`     // 值为人脸的质量判断的分数,是一个浮点数,范围 [0,100],小数点后 3 位有效数字
		Threshold float32 `json:"threshold"` // 表示人脸质量基本合格的一个阈值,超过该阈值的人脸适合用于人脸比对
	} `json:"facequality"` // 人脸质量判断结果
	Ethnicity struct {
		Value string `json:"value"` // 人种值
	} `json:"ethnicity"` // 人种分析结果 Asian|亚洲人 White|白人 Black|黑人
	Beauty struct {
		MaleScore   float32 `json:"male_score"`   // 男性认为的此人脸颜值分数。值越大,颜值越高
		FemaleScore float32 `json:"female_score"` // 女性认为的此人脸颜值分数。值越大,颜值越高
	} `json:"beauty"` // 颜值识别结果
	Mouthstatus map[string]float32 `json:"mouthstatus"` // 嘴部状态信息
	Eyegaze     struct {
		LeftEyeGaze  map[string]float32 `json:"left_eye_gaze"`  // 左眼的位置与视线状态
		RightEyeGaze map[string]float32 `json:"right_eye_gaze"` // 右眼的位置与视线状态
	} `json:"eyegaze"` // 眼球位置与视线方向信息
	Skinstatus map[string]float32 `json:"skinstatus"` // 面部特征识别结果 health:健康 stain:色斑 acne:青春痘 dark_circle:黑眼圈
}

Attributes 人脸属性特征

type CompareFaceResponse

type CompareFaceResponse struct {
	FaceResponse
	Confidence float32            `json:"confidence"`
	Thresholds map[string]float32 `json:"thresholds"`
	ImageId1   string             `json:"image_id1"`
	ImageId2   string             `json:"image_id2"`
	Faces1     []*Face            `json:"faces1"`
	Faces2     []*Face            `json:"faces2"`
}

CompareFaceResponse 人脸对比响应数据

type DetectFaceResponse

type DetectFaceResponse struct {
	FaceResponse
	ImageId string  `json:"image_id"` // 被检测的图片在系统中的标识
	Faces   []*Face `json:"faces"`    // 被检测出的人脸数组,具体包含内容见下文 注:如果没有检测出人脸则为空数组
}

DetectFaceResponse 人脸检测响应数据

type Face

type Face struct {
	FaceToken     string `json:"face_token"` // 人脸的标识
	FaceRectangle struct {
		Top    int `json:"top"`
		Left   int `json:"left"`
		Width  int `json:"width"`
		Height int `json:"height"`
	} `json:"face_rectangle"` // 人脸矩形框的位置,包括以下属性
	Landmark   map[string]*Landmark `json:"landmark"`   // 人脸的关键点坐标数组
	Attributes *Attributes          `json:"attributes"` // 人脸属性特征,具体包含的信息见下表
}

Face 数组中单个元素的结构

type FaceAPIRequest

type FaceAPIRequest struct {
	FaceRequest
	// contains filtered or unexported fields
}

FaceAPIRequest FaceSet管理对象

func (*FaceAPIRequest) SetOption

func (far *FaceAPIRequest) SetOption(key string, val interface{}) *FaceAPIRequest

SetOption 设置请求参数

func (*FaceAPIRequest) SetOptionMap

func (far *FaceAPIRequest) SetOptionMap(options map[string]interface{}) *FaceAPIRequest

SetOptionMap 通过map设置请求参数

type FaceCompare

type FaceCompare struct {
	FaceRequest
}

FaceCompare 人脸比对对象

func (*FaceCompare) End

End 发送请求获取结果

func (*FaceCompare) SetFace1

func (fc *FaceCompare) SetFace1(face1, dt string) *FaceCompare

SetFace1 设置第一张照片 dt可以是(face_token1|image_url1|image_file1|image_base64_1)

func (*FaceCompare) SetFace2

func (fc *FaceCompare) SetFace2(face2, dt string) *FaceCompare

SetFace2 设置第二张照片 dt可以是(face_token2|image_url2|image_file2|image_base64_2)

func (*FaceCompare) SetOption

func (fc *FaceCompare) SetOption(key string, val interface{}) *FaceCompare

SetOption 设置请求参数

func (*FaceCompare) SetOptionMap

func (fc *FaceCompare) SetOptionMap(options map[string]interface{}) *FaceCompare

SetOptionMap 通过map设置请求参数

type FaceDetect

type FaceDetect struct {
	FaceRequest
}

FaceDetect 人脸检测和人脸分析对象

func (*FaceDetect) End

func (fd *FaceDetect) End() (*DetectFaceResponse, string, error)

End 发送请求获取结果

func (*FaceDetect) SetImage

func (fd *FaceDetect) SetImage(img, dt string) *FaceDetect

SetImage 设置图片信息 dt可以是(image_url|image_file|image_base64)

func (*FaceDetect) SetOption

func (fd *FaceDetect) SetOption(key string, val interface{}) *FaceDetect

SetOption 设置请求参数

func (*FaceDetect) SetOptionMap

func (fd *FaceDetect) SetOptionMap(options map[string]interface{}) *FaceDetect

SetOptionMap 通过map设置请求参数

type FaceError

type FaceError struct {
	Code         int    `json:"code"`          // 错误状态码
	ErrorMessage string `json:"error_message"` // 接口返回错误
	Message      string `json:"message"`       // 错误描述
}

FaceError 用于返回错误信息给调用方

func NewFaceError

func NewFaceError(code int, body string) (err *FaceError)

*

  • NewFaceError 创建一个错误
  • @param code http 错误码
  • @param body 接口返回的body

func (*FaceError) Error

func (fe *FaceError) Error() string

Error 输出错误信息为字符串

type FaceRequest

type FaceRequest struct {
	// contains filtered or unexported fields
}

FaceRequest 请求操作对象

type FaceResponse

type FaceResponse struct {
	RequestId    string `json:"request_id"`    // 用于区分每一次请求的唯一的字符串。此字符串可以用于后续数据反查。
	TimeUsed     int    `json:"time_used"`     // 整个请求所花费的时间,单位为毫秒。
	ErrorMessage string `json:"error_message"` // 当请求失败时才会返回此字符串,具体返回内容见后续错误信息章节。否则此字段不存在。
}

FaceResponse 接口返回数据结构体

type FaceSDK

type FaceSDK struct {
	APIKey    string
	APISecret string
	Debug     bool // 是否调试
}

FaceSDK Face++ sdk 对象

func NewFaceSDK

func NewFaceSDK(apiKey, apiSecret string, debug ...bool) (*FaceSDK, error)

*

  • NewFaceSDK 创建一个sdk对象,用于操作sdk
  • @param apiKey API Key
  • @param apiSecret API Secret
  • @param formal 是否是正式版 API Key

func (*FaceSDK) Compare

func (sdk *FaceSDK) Compare(options ...map[string]interface{}) (*FaceCompare, error)

Compare 构建一个人脸比对对象

func (*FaceSDK) Detect

func (sdk *FaceSDK) Detect(options ...map[string]interface{}) (*FaceDetect, error)

Detect 构建一个人脸检测和人脸分析对象

func (*FaceSDK) Face

func (sdk *FaceSDK) Face(options ...map[string]interface{}) (*FaceAPIRequest, error)

Face 人脸分析对象

func (*FaceSDK) FaceSet

func (sdk *FaceSDK) FaceSet(options ...map[string]interface{}) (*FaceSetRequest, error)

FaceSet 创建一个FaceSet操作对象

func (*FaceSDK) Search

func (sdk *FaceSDK) Search(options ...map[string]interface{}) (*SearchRequest, error)

Search 构建一个人脸比对对象

type FaceSetAddFaceFaceResponse

type FaceSetAddFaceFaceResponse struct {
	FaceSetCreateFaceResponse
}

FaceSetAddFaceFaceResponse 添加人脸标识face_token响应数据,和创建FaceSet相同

type FaceSetBaseFaceResponse

type FaceSetBaseFaceResponse struct {
	FaceResponse
	FacesetToken  string           `json:"faceset_token"`  // FaceSet 的标识
	OuterId       string           `json:"outer_id"`       // 用户自定义的 FaceSet 标识,如果未定义则返回值为空
	FaceCount     int              `json:"face_count"`     // 操作结束后 FaceSet 中的 face_token 总数量
	FailureDetail []*FailureDetail `json:"failure_detail"` // 无法被加入 FaceSet 的 face_token 以及原因
}

FaceSetBaseFaceResponse 基础响应结构

type FaceSetCreateFaceResponse

type FaceSetCreateFaceResponse struct {
	FaceSetBaseFaceResponse
	FaceAdded int `json:"face_added"` // 本次操作成功加入 FaceSet的face_token 数量
}

FaceSetCreateFaceResponse 创建人脸集合FaceSet响应数据

type FaceSetDeleteFaceFaceResponse

type FaceSetDeleteFaceFaceResponse struct {
	FaceResponse
	FacesetToken string `json:"faceset_token"` // FaceSet 的标识
	OuterId      string `json:"outer_id"`      // 用户自定义的 FaceSet 标识,如果未定义则返回值为空
}

FaceSetDeleteFaceFaceResponse 删除一个人脸集合响应

type FaceSetGetDetailFaceFaceResponse

type FaceSetGetDetailFaceFaceResponse struct {
	FaceResponse
	FacesetToken string   `json:"faceset_token"` // FaceSet 的标识
	OuterId      string   `json:"outer_id"`      // 用户自定义的 FaceSet 标识,如果未定义则返回值为空
	DisplayName  string   `json:"display_name"`  // 人脸集合的名字
	UserData     string   `json:"user_data"`     // 自定义用户信息
	Tags         string   `json:"tags"`          // 自定义标签
	FaceCount    int      `json:"face_count"`    // 操作结束后 FaceSet 中的 face_token 总数量
	FaceTokens   []string `json:"face_tokens"`   // face_token的数组
	Next         string   `json:"next"`          // 用于进行下一次请求。返回值表示排在此次返回的所有 face_token 之后的下一个 face_token 的序号
}

FaceSetGetDetailFaceFaceResponse 获取一个 FaceSet 的所有信息响应

type FaceSetGetFaceSetsFaceFaceResponse

type FaceSetGetFaceSetsFaceFaceResponse struct {
	FaceResponse
	Facesets []*Faceset `json:"facesets"` // 该 API Key 下的 FaceSet 信息
	Next     string     `json:"next"`     // 用于进行下一次请求。返回值表示排在此次返回的所有 face_token 之后的下一个 face_token 的序号
}

FaceSetGetFaceSetsFaceFaceResponse 获取某一 API Key 下的 FaceSet 列表响应

type FaceSetRemoveFaceFaceResponse

type FaceSetRemoveFaceFaceResponse struct {
	FaceSetBaseFaceResponse
	FaceRemoved int `json:"face_removed"` // 成功从FaceSet中移除的face_token数量
}

FaceSetRemoveFaceFaceResponse 移除一个FaceSet中的某些或者全部face_token响应

type FaceSetRequest

type FaceSetRequest struct {
	FaceRequest
	// contains filtered or unexported fields
}

FaceSetRequest FaceSet管理对象

func (*FaceSetRequest) AddFace

func (fsr *FaceSetRequest) AddFace() *FaceSetRequest

AddFace 添加人脸标识 face_token到FaceSet

func (*FaceSetRequest) Create

func (fsr *FaceSetRequest) Create() *FaceSetRequest

Create 创建一个人脸集合

func (*FaceSetRequest) Delete

func (fsr *FaceSetRequest) Delete() *FaceSetRequest

Delete 删除一个人脸集合

func (*FaceSetRequest) End

func (fsr *FaceSetRequest) End() (interface{}, string, error)

End 发送请求获取结果

func (*FaceSetRequest) GetDetail

func (fsr *FaceSetRequest) GetDetail() *FaceSetRequest

GetDetail 更新一个人脸集合的属性

func (*FaceSetRequest) GetFaceSets

func (fsr *FaceSetRequest) GetFaceSets() *FaceSetRequest

GetFaceSets 获取某一 API Key 下的 FaceSet 列表

func (*FaceSetRequest) RemoveFace

func (fsr *FaceSetRequest) RemoveFace() *FaceSetRequest

RemoveFace 移除一个FaceSet中的某些或者全部face_token

func (*FaceSetRequest) SetOption

func (fsr *FaceSetRequest) SetOption(key string, val interface{}) *FaceSetRequest

SetOption 设置请求参数

func (*FaceSetRequest) SetOptionMap

func (fsr *FaceSetRequest) SetOptionMap(options map[string]interface{}) *FaceSetRequest

SetOptionMap 通过map设置请求参数

func (*FaceSetRequest) Update

func (fsr *FaceSetRequest) Update() *FaceSetRequest

Update 更新一个人脸集合的属性

type FaceSetUpdateFaceFaceResponse

type FaceSetUpdateFaceFaceResponse struct {
	FaceResponse
	FacesetToken string `json:"faceset_token"` // FaceSet 的标识
	OuterId      string `json:"outer_id"`      // 用户自定义的 FaceSet 标识,如果未定义则返回值为空
}

FaceSetUpdateFaceFaceResponse 更新一个人脸集合的属性响应

type Faceset

type Faceset struct {
	FacesetToken string `json:"faceset_token"` // FaceSet 的标识
	OuterId      string `json:"outer_id"`      // 用户自定义的 FaceSet 标识,如果未定义则返回值为空
	DisplayName  string `json:"display_name"`  // FaceSet的名字,如果未提供为空
	Tags         string `json:"tags"`          // FaceSet的标签,如果未提供为空
}

Faceset FaceSet数组中单个元素的结构

type FailureDetail

type FailureDetail struct {
	Reason    string `json:"reason"`     // 不能被添加的原因,包括 INVALID_FACE_TOKEN 人脸表示不存在 ,QUOTA_EXCEEDED 已达到 FaceSet 存储上限
	FaceToken string `json:"face_token"` // 人脸标识
}

FailureDetail 不能被添加的原因

type Landmark

type Landmark struct {
	X interface{}
	Y interface{}
}

Landmark 关键点坐标

type SearchFaceResponse

type SearchFaceResponse struct {
	FaceResponse
	Results    []*SearchResults   `json:"results"`    // 搜索结果对象数组
	Thresholds map[string]float32 `json:"thresholds"` // 一组用于参考的置信度阈值
	ImageId    string             `json:"image_id"`   // 传入的图片在系统中的标识
	Faces      []*Face            `json:"faces"`      // 传入的图片中检测出的人脸数组
}

SearchFaceResponse 搜索接口返响应数据

type SearchRequest

type SearchRequest struct {
	FaceRequest
}

SearchRequest 人脸搜索对象

func (*SearchRequest) End

End 发送请求获取结果

func (*SearchRequest) SetFace

func (sc *SearchRequest) SetFace(face, dt string) *SearchRequest

SetFace 设置要搜索的图片 dt可以是(face_token|image_url|image_file|image_base64)

func (*SearchRequest) SetFaceSet

func (sc *SearchRequest) SetFaceSet(set, dt string) *SearchRequest

SetFaceSet 设置要查找的faceset dt可以是(faceset_token|outer_id)

func (*SearchRequest) SetOption

func (sc *SearchRequest) SetOption(key string, val interface{}) *SearchRequest

SetOption 设置请求参数

func (*SearchRequest) SetOptionMap

func (sc *SearchRequest) SetOptionMap(options map[string]interface{}) *SearchRequest

SetOptionMap 通过map设置请求参数

type SearchResults

type SearchResults struct {
	FaceToken  string  `json:"face_token"` // 从 FaceSet 中搜索出的一个人脸标识 face_token
	Confidence float32 `json:"confidence"` // 比对结果置信度,范围 [0,100],小数点后3位有效数字,数字越大表示两个人脸越可能是同一个人
	UserId     string  `json:"user_id"`    // 用户提供的人脸标识,如果未提供则为空
}

SearchResults 搜索结果对象

Directories

Path Synopsis
examples

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL