liuxiaolong
2019-05-21 fc2d2bcbdea4e392cfb0a81d8b1365854faaed60
fix confict of Point x,y Type
2个文件已修改
886 ■■■■ 已修改文件
protomsg.pb.go 817 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
protomsg.proto 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
protomsg.pb.go
@@ -762,54 +762,6 @@
    return nil
}
//Point struct
type Point struct {
    X                    string   `protobuf:"bytes,1,opt,name=x,proto3" json:"x,omitempty"`
    Y                    string   `protobuf:"bytes,2,opt,name=y,proto3" json:"y,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *Point) Reset()         { *m = Point{} }
func (m *Point) String() string { return proto.CompactTextString(m) }
func (*Point) ProtoMessage()    {}
func (*Point) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{10}
}
func (m *Point) XXX_Unmarshal(b []byte) error {
    return xxx_messageInfo_Point.Unmarshal(m, b)
}
func (m *Point) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    return xxx_messageInfo_Point.Marshal(b, m, deterministic)
}
func (m *Point) XXX_Merge(src proto.Message) {
    xxx_messageInfo_Point.Merge(m, src)
}
func (m *Point) XXX_Size() int {
    return xxx_messageInfo_Point.Size(m)
}
func (m *Point) XXX_DiscardUnknown() {
    xxx_messageInfo_Point.DiscardUnknown(m)
}
var xxx_messageInfo_Point proto.InternalMessageInfo
func (m *Point) GetX() string {
    if m != nil {
        return m.X
    }
    return ""
}
func (m *Point) GetY() string {
    if m != nil {
        return m.Y
    }
    return ""
}
type CameraTaskArgs struct {
    Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
    CameraTaskId         string   `protobuf:"bytes,2,opt,name=camera_task_id,json=cameraTaskId,proto3" json:"camera_task_id,omitempty"`
@@ -832,7 +784,7 @@
func (m *CameraTaskArgs) String() string { return proto.CompactTextString(m) }
func (*CameraTaskArgs) ProtoMessage()    {}
func (*CameraTaskArgs) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{11}
    return fileDescriptor_32de24555f916688, []int{10}
}
func (m *CameraTaskArgs) XXX_Unmarshal(b []byte) error {
@@ -958,7 +910,7 @@
func (m *Sdk) String() string { return proto.CompactTextString(m) }
func (*Sdk) ProtoMessage()    {}
func (*Sdk) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{12}
    return fileDescriptor_32de24555f916688, []int{11}
}
func (m *Sdk) XXX_Unmarshal(b []byte) error {
@@ -1066,7 +1018,7 @@
func (m *SdkArg) String() string { return proto.CompactTextString(m) }
func (*SdkArg) ProtoMessage()    {}
func (*SdkArg) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{13}
    return fileDescriptor_32de24555f916688, []int{12}
}
func (m *SdkArg) XXX_Unmarshal(b []byte) error {
@@ -1129,6 +1081,600 @@
    return 0
}
// struct for sdk
type Point struct {
    X                    int32    `protobuf:"varint,1,opt,name=x,proto3" json:"x,omitempty"`
    Y                    int32    `protobuf:"varint,2,opt,name=y,proto3" json:"y,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *Point) Reset()         { *m = Point{} }
func (m *Point) String() string { return proto.CompactTextString(m) }
func (*Point) ProtoMessage()    {}
func (*Point) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{13}
}
func (m *Point) XXX_Unmarshal(b []byte) error {
    return xxx_messageInfo_Point.Unmarshal(m, b)
}
func (m *Point) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    return xxx_messageInfo_Point.Marshal(b, m, deterministic)
}
func (m *Point) XXX_Merge(src proto.Message) {
    xxx_messageInfo_Point.Merge(m, src)
}
func (m *Point) XXX_Size() int {
    return xxx_messageInfo_Point.Size(m)
}
func (m *Point) XXX_DiscardUnknown() {
    xxx_messageInfo_Point.DiscardUnknown(m)
}
var xxx_messageInfo_Point proto.InternalMessageInfo
func (m *Point) GetX() int32 {
    if m != nil {
        return m.X
    }
    return 0
}
func (m *Point) GetY() int32 {
    if m != nil {
        return m.Y
    }
    return 0
}
type Rect struct {
    Left                 int32    `protobuf:"varint,1,opt,name=left,proto3" json:"left,omitempty"`
    Top                  int32    `protobuf:"varint,2,opt,name=top,proto3" json:"top,omitempty"`
    Right                int32    `protobuf:"varint,3,opt,name=right,proto3" json:"right,omitempty"`
    Bottom               int32    `protobuf:"varint,4,opt,name=bottom,proto3" json:"bottom,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *Rect) Reset()         { *m = Rect{} }
func (m *Rect) String() string { return proto.CompactTextString(m) }
func (*Rect) ProtoMessage()    {}
func (*Rect) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{14}
}
func (m *Rect) XXX_Unmarshal(b []byte) error {
    return xxx_messageInfo_Rect.Unmarshal(m, b)
}
func (m *Rect) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    return xxx_messageInfo_Rect.Marshal(b, m, deterministic)
}
func (m *Rect) XXX_Merge(src proto.Message) {
    xxx_messageInfo_Rect.Merge(m, src)
}
func (m *Rect) XXX_Size() int {
    return xxx_messageInfo_Rect.Size(m)
}
func (m *Rect) XXX_DiscardUnknown() {
    xxx_messageInfo_Rect.DiscardUnknown(m)
}
var xxx_messageInfo_Rect proto.InternalMessageInfo
func (m *Rect) GetLeft() int32 {
    if m != nil {
        return m.Left
    }
    return 0
}
func (m *Rect) GetTop() int32 {
    if m != nil {
        return m.Top
    }
    return 0
}
func (m *Rect) GetRight() int32 {
    if m != nil {
        return m.Right
    }
    return 0
}
func (m *Rect) GetBottom() int32 {
    if m != nil {
        return m.Bottom
    }
    return 0
}
type FaceAngle struct {
    Yaw                  int32    `protobuf:"varint,1,opt,name=yaw,proto3" json:"yaw,omitempty"`
    Pitch                int32    `protobuf:"varint,2,opt,name=pitch,proto3" json:"pitch,omitempty"`
    Roll                 int32    `protobuf:"varint,3,opt,name=roll,proto3" json:"roll,omitempty"`
    Confidence           float32  `protobuf:"fixed32,4,opt,name=confidence,proto3" json:"confidence,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *FaceAngle) Reset()         { *m = FaceAngle{} }
func (m *FaceAngle) String() string { return proto.CompactTextString(m) }
func (*FaceAngle) ProtoMessage()    {}
func (*FaceAngle) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{15}
}
func (m *FaceAngle) XXX_Unmarshal(b []byte) error {
    return xxx_messageInfo_FaceAngle.Unmarshal(m, b)
}
func (m *FaceAngle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    return xxx_messageInfo_FaceAngle.Marshal(b, m, deterministic)
}
func (m *FaceAngle) XXX_Merge(src proto.Message) {
    xxx_messageInfo_FaceAngle.Merge(m, src)
}
func (m *FaceAngle) XXX_Size() int {
    return xxx_messageInfo_FaceAngle.Size(m)
}
func (m *FaceAngle) XXX_DiscardUnknown() {
    xxx_messageInfo_FaceAngle.DiscardUnknown(m)
}
var xxx_messageInfo_FaceAngle proto.InternalMessageInfo
func (m *FaceAngle) GetYaw() int32 {
    if m != nil {
        return m.Yaw
    }
    return 0
}
func (m *FaceAngle) GetPitch() int32 {
    if m != nil {
        return m.Pitch
    }
    return 0
}
func (m *FaceAngle) GetRoll() int32 {
    if m != nil {
        return m.Roll
    }
    return 0
}
func (m *FaceAngle) GetConfidence() float32 {
    if m != nil {
        return m.Confidence
    }
    return 0
}
type ThftResult struct {
    Gender               int32    `protobuf:"varint,1,opt,name=gender,proto3" json:"gender,omitempty"`
    Age                  int32    `protobuf:"varint,2,opt,name=age,proto3" json:"age,omitempty"`
    Race                 int32    `protobuf:"varint,3,opt,name=race,proto3" json:"race,omitempty"`
    Beauty               int32    `protobuf:"varint,4,opt,name=beauty,proto3" json:"beauty,omitempty"`
    Smile                int32    `protobuf:"varint,5,opt,name=smile,proto3" json:"smile,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *ThftResult) Reset()         { *m = ThftResult{} }
func (m *ThftResult) String() string { return proto.CompactTextString(m) }
func (*ThftResult) ProtoMessage()    {}
func (*ThftResult) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{16}
}
func (m *ThftResult) XXX_Unmarshal(b []byte) error {
    return xxx_messageInfo_ThftResult.Unmarshal(m, b)
}
func (m *ThftResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    return xxx_messageInfo_ThftResult.Marshal(b, m, deterministic)
}
func (m *ThftResult) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ThftResult.Merge(m, src)
}
func (m *ThftResult) XXX_Size() int {
    return xxx_messageInfo_ThftResult.Size(m)
}
func (m *ThftResult) XXX_DiscardUnknown() {
    xxx_messageInfo_ThftResult.DiscardUnknown(m)
}
var xxx_messageInfo_ThftResult proto.InternalMessageInfo
func (m *ThftResult) GetGender() int32 {
    if m != nil {
        return m.Gender
    }
    return 0
}
func (m *ThftResult) GetAge() int32 {
    if m != nil {
        return m.Age
    }
    return 0
}
func (m *ThftResult) GetRace() int32 {
    if m != nil {
        return m.Race
    }
    return 0
}
func (m *ThftResult) GetBeauty() int32 {
    if m != nil {
        return m.Beauty
    }
    return 0
}
func (m *ThftResult) GetSmile() int32 {
    if m != nil {
        return m.Smile
    }
    return 0
}
type FacePos struct {
    RcFace               *Rect      `protobuf:"bytes,1,opt,name=rcFace,proto3" json:"rcFace,omitempty"`
    PtLeftEye            *Point     `protobuf:"bytes,2,opt,name=ptLeftEye,proto3" json:"ptLeftEye,omitempty"`
    PtRightEye           *Point     `protobuf:"bytes,3,opt,name=ptRightEye,proto3" json:"ptRightEye,omitempty"`
    PtMouth              *Point     `protobuf:"bytes,4,opt,name=ptMouth,proto3" json:"ptMouth,omitempty"`
    PtNose               *Point     `protobuf:"bytes,5,opt,name=ptNose,proto3" json:"ptNose,omitempty"`
    FAngle               *FaceAngle `protobuf:"bytes,6,opt,name=fAngle,proto3" json:"fAngle,omitempty"`
    Quality              int32      `protobuf:"varint,7,opt,name=quality,proto3" json:"quality,omitempty"`
    FacialData           []byte     `protobuf:"bytes,8,opt,name=facialData,proto3" json:"facialData,omitempty"`
    XXX_NoUnkeyedLiteral struct{}   `json:"-"`
    XXX_unrecognized     []byte     `json:"-"`
    XXX_sizecache        int32      `json:"-"`
}
func (m *FacePos) Reset()         { *m = FacePos{} }
func (m *FacePos) String() string { return proto.CompactTextString(m) }
func (*FacePos) ProtoMessage()    {}
func (*FacePos) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{17}
}
func (m *FacePos) XXX_Unmarshal(b []byte) error {
    return xxx_messageInfo_FacePos.Unmarshal(m, b)
}
func (m *FacePos) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    return xxx_messageInfo_FacePos.Marshal(b, m, deterministic)
}
func (m *FacePos) XXX_Merge(src proto.Message) {
    xxx_messageInfo_FacePos.Merge(m, src)
}
func (m *FacePos) XXX_Size() int {
    return xxx_messageInfo_FacePos.Size(m)
}
func (m *FacePos) XXX_DiscardUnknown() {
    xxx_messageInfo_FacePos.DiscardUnknown(m)
}
var xxx_messageInfo_FacePos proto.InternalMessageInfo
func (m *FacePos) GetRcFace() *Rect {
    if m != nil {
        return m.RcFace
    }
    return nil
}
func (m *FacePos) GetPtLeftEye() *Point {
    if m != nil {
        return m.PtLeftEye
    }
    return nil
}
func (m *FacePos) GetPtRightEye() *Point {
    if m != nil {
        return m.PtRightEye
    }
    return nil
}
func (m *FacePos) GetPtMouth() *Point {
    if m != nil {
        return m.PtMouth
    }
    return nil
}
func (m *FacePos) GetPtNose() *Point {
    if m != nil {
        return m.PtNose
    }
    return nil
}
func (m *FacePos) GetFAngle() *FaceAngle {
    if m != nil {
        return m.FAngle
    }
    return nil
}
func (m *FacePos) GetQuality() int32 {
    if m != nil {
        return m.Quality
    }
    return 0
}
func (m *FacePos) GetFacialData() []byte {
    if m != nil {
        return m.FacialData
    }
    return nil
}
type FaceInfo struct {
    RcFace               *Rect      `protobuf:"bytes,1,opt,name=rcFace,proto3" json:"rcFace,omitempty"`
    PtLeftEye            *Point     `protobuf:"bytes,2,opt,name=ptLeftEye,proto3" json:"ptLeftEye,omitempty"`
    PtRightEye           *Point     `protobuf:"bytes,3,opt,name=ptRightEye,proto3" json:"ptRightEye,omitempty"`
    PtMouth              *Point     `protobuf:"bytes,4,opt,name=ptMouth,proto3" json:"ptMouth,omitempty"`
    PtNose               *Point     `protobuf:"bytes,5,opt,name=ptNose,proto3" json:"ptNose,omitempty"`
    FAngle               *FaceAngle `protobuf:"bytes,6,opt,name=fAngle,proto3" json:"fAngle,omitempty"`
    Quality              int32      `protobuf:"varint,7,opt,name=quality,proto3" json:"quality,omitempty"`
    FacialData           []byte     `protobuf:"bytes,8,opt,name=facialData,proto3" json:"facialData,omitempty"`
    FaceID               int64      `protobuf:"varint,9,opt,name=faceID,proto3" json:"faceID,omitempty"`
    XXX_NoUnkeyedLiteral struct{}   `json:"-"`
    XXX_unrecognized     []byte     `json:"-"`
    XXX_sizecache        int32      `json:"-"`
}
func (m *FaceInfo) Reset()         { *m = FaceInfo{} }
func (m *FaceInfo) String() string { return proto.CompactTextString(m) }
func (*FaceInfo) ProtoMessage()    {}
func (*FaceInfo) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{18}
}
func (m *FaceInfo) XXX_Unmarshal(b []byte) error {
    return xxx_messageInfo_FaceInfo.Unmarshal(m, b)
}
func (m *FaceInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    return xxx_messageInfo_FaceInfo.Marshal(b, m, deterministic)
}
func (m *FaceInfo) XXX_Merge(src proto.Message) {
    xxx_messageInfo_FaceInfo.Merge(m, src)
}
func (m *FaceInfo) XXX_Size() int {
    return xxx_messageInfo_FaceInfo.Size(m)
}
func (m *FaceInfo) XXX_DiscardUnknown() {
    xxx_messageInfo_FaceInfo.DiscardUnknown(m)
}
var xxx_messageInfo_FaceInfo proto.InternalMessageInfo
func (m *FaceInfo) GetRcFace() *Rect {
    if m != nil {
        return m.RcFace
    }
    return nil
}
func (m *FaceInfo) GetPtLeftEye() *Point {
    if m != nil {
        return m.PtLeftEye
    }
    return nil
}
func (m *FaceInfo) GetPtRightEye() *Point {
    if m != nil {
        return m.PtRightEye
    }
    return nil
}
func (m *FaceInfo) GetPtMouth() *Point {
    if m != nil {
        return m.PtMouth
    }
    return nil
}
func (m *FaceInfo) GetPtNose() *Point {
    if m != nil {
        return m.PtNose
    }
    return nil
}
func (m *FaceInfo) GetFAngle() *FaceAngle {
    if m != nil {
        return m.FAngle
    }
    return nil
}
func (m *FaceInfo) GetQuality() int32 {
    if m != nil {
        return m.Quality
    }
    return 0
}
func (m *FaceInfo) GetFacialData() []byte {
    if m != nil {
        return m.FacialData
    }
    return nil
}
func (m *FaceInfo) GetFaceID() int64 {
    if m != nil {
        return m.FaceID
    }
    return 0
}
type ObjInfo struct {
    RcObj                *Rect    `protobuf:"bytes,1,opt,name=rcObj,proto3" json:"rcObj,omitempty"`
    Typ                  int32    `protobuf:"varint,2,opt,name=typ,proto3" json:"typ,omitempty"`
    Prob                 float32  `protobuf:"fixed32,3,opt,name=prob,proto3" json:"prob,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *ObjInfo) Reset()         { *m = ObjInfo{} }
func (m *ObjInfo) String() string { return proto.CompactTextString(m) }
func (*ObjInfo) ProtoMessage()    {}
func (*ObjInfo) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{19}
}
func (m *ObjInfo) XXX_Unmarshal(b []byte) error {
    return xxx_messageInfo_ObjInfo.Unmarshal(m, b)
}
func (m *ObjInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    return xxx_messageInfo_ObjInfo.Marshal(b, m, deterministic)
}
func (m *ObjInfo) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ObjInfo.Merge(m, src)
}
func (m *ObjInfo) XXX_Size() int {
    return xxx_messageInfo_ObjInfo.Size(m)
}
func (m *ObjInfo) XXX_DiscardUnknown() {
    xxx_messageInfo_ObjInfo.DiscardUnknown(m)
}
var xxx_messageInfo_ObjInfo proto.InternalMessageInfo
func (m *ObjInfo) GetRcObj() *Rect {
    if m != nil {
        return m.RcObj
    }
    return nil
}
func (m *ObjInfo) GetTyp() int32 {
    if m != nil {
        return m.Typ
    }
    return 0
}
func (m *ObjInfo) GetProb() float32 {
    if m != nil {
        return m.Prob
    }
    return 0
}
// sdk face property
type ParamFaceProperty struct {
    Pos                  *FacePos `protobuf:"bytes,1,opt,name=pos,proto3" json:"pos,omitempty"`
    Img                  *Image   `protobuf:"bytes,2,opt,name=img,proto3" json:"img,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *ParamFaceProperty) Reset()         { *m = ParamFaceProperty{} }
func (m *ParamFaceProperty) String() string { return proto.CompactTextString(m) }
func (*ParamFaceProperty) ProtoMessage()    {}
func (*ParamFaceProperty) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{20}
}
func (m *ParamFaceProperty) XXX_Unmarshal(b []byte) error {
    return xxx_messageInfo_ParamFaceProperty.Unmarshal(m, b)
}
func (m *ParamFaceProperty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    return xxx_messageInfo_ParamFaceProperty.Marshal(b, m, deterministic)
}
func (m *ParamFaceProperty) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ParamFaceProperty.Merge(m, src)
}
func (m *ParamFaceProperty) XXX_Size() int {
    return xxx_messageInfo_ParamFaceProperty.Size(m)
}
func (m *ParamFaceProperty) XXX_DiscardUnknown() {
    xxx_messageInfo_ParamFaceProperty.DiscardUnknown(m)
}
var xxx_messageInfo_ParamFaceProperty proto.InternalMessageInfo
func (m *ParamFaceProperty) GetPos() *FacePos {
    if m != nil {
        return m.Pos
    }
    return nil
}
func (m *ParamFaceProperty) GetImg() *Image {
    if m != nil {
        return m.Img
    }
    return nil
}
// sdk face extract
type ParamFaceCompare struct {
    Feat1                []byte   `protobuf:"bytes,1,opt,name=feat1,proto3" json:"feat1,omitempty"`
    Feat2                []byte   `protobuf:"bytes,2,opt,name=feat2,proto3" json:"feat2,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *ParamFaceCompare) Reset()         { *m = ParamFaceCompare{} }
func (m *ParamFaceCompare) String() string { return proto.CompactTextString(m) }
func (*ParamFaceCompare) ProtoMessage()    {}
func (*ParamFaceCompare) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{21}
}
func (m *ParamFaceCompare) XXX_Unmarshal(b []byte) error {
    return xxx_messageInfo_ParamFaceCompare.Unmarshal(m, b)
}
func (m *ParamFaceCompare) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    return xxx_messageInfo_ParamFaceCompare.Marshal(b, m, deterministic)
}
func (m *ParamFaceCompare) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ParamFaceCompare.Merge(m, src)
}
func (m *ParamFaceCompare) XXX_Size() int {
    return xxx_messageInfo_ParamFaceCompare.Size(m)
}
func (m *ParamFaceCompare) XXX_DiscardUnknown() {
    xxx_messageInfo_ParamFaceCompare.DiscardUnknown(m)
}
var xxx_messageInfo_ParamFaceCompare proto.InternalMessageInfo
func (m *ParamFaceCompare) GetFeat1() []byte {
    if m != nil {
        return m.Feat1
    }
    return nil
}
func (m *ParamFaceCompare) GetFeat2() []byte {
    if m != nil {
        return m.Feat2
    }
    return nil
}
func init() {
    proto.RegisterType((*TaskLabel)(nil), "protomsg.TaskLabel")
    proto.RegisterType((*SdkMessage)(nil), "protomsg.SdkMessage")
@@ -1140,80 +1686,113 @@
    proto.RegisterType((*DayCtl)(nil), "protomsg.DayCtl")
    proto.RegisterType((*TimeRange)(nil), "protomsg.TimeRange")
    proto.RegisterType((*Polygon)(nil), "protomsg.Polygon")
    proto.RegisterType((*Point)(nil), "protomsg.Point")
    proto.RegisterType((*CameraTaskArgs)(nil), "protomsg.CameraTaskArgs")
    proto.RegisterType((*Sdk)(nil), "protomsg.Sdk")
    proto.RegisterType((*SdkArg)(nil), "protomsg.SdkArg")
    proto.RegisterType((*Point)(nil), "protomsg.Point")
    proto.RegisterType((*Rect)(nil), "protomsg.Rect")
    proto.RegisterType((*FaceAngle)(nil), "protomsg.FaceAngle")
    proto.RegisterType((*ThftResult)(nil), "protomsg.ThftResult")
    proto.RegisterType((*FacePos)(nil), "protomsg.FacePos")
    proto.RegisterType((*FaceInfo)(nil), "protomsg.FaceInfo")
    proto.RegisterType((*ObjInfo)(nil), "protomsg.ObjInfo")
    proto.RegisterType((*ParamFaceProperty)(nil), "protomsg.ParamFaceProperty")
    proto.RegisterType((*ParamFaceCompare)(nil), "protomsg.ParamFaceCompare")
}
func init() { proto.RegisterFile("protomsg.proto", fileDescriptor_32de24555f916688) }
var fileDescriptor_32de24555f916688 = []byte{
    // 1044 bytes of a gzipped FileDescriptorProto
    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xcd, 0x8e, 0x23, 0x35,
    0x10, 0x56, 0x32, 0xf9, 0xe9, 0xae, 0x64, 0xc2, 0xaa, 0x59, 0xa0, 0x59, 0x40, 0x1b, 0x7a, 0x47,
    0x62, 0x2e, 0xec, 0x61, 0xf6, 0x09, 0xc2, 0xae, 0x06, 0x45, 0x82, 0xd1, 0xe2, 0x59, 0x2d, 0xc7,
    0x96, 0x13, 0x7b, 0x7b, 0xac, 0x38, 0xdd, 0x2d, 0xdb, 0x3d, 0x93, 0xdc, 0x79, 0x00, 0x1e, 0x8b,
    0xb7, 0xe0, 0xce, 0x0b, 0x70, 0x45, 0xe5, 0x72, 0x77, 0x32, 0xb3, 0x03, 0xe2, 0x56, 0xf5, 0x55,
    0xb9, 0x5c, 0xf5, 0xb9, 0xaa, 0x0c, 0xb3, 0xda, 0x54, 0xae, 0xda, 0xda, 0xe2, 0xa5, 0x17, 0x92,
    0xa8, 0xd5, 0xb3, 0x5f, 0x20, 0x7e, 0xc7, 0xed, 0xe6, 0x27, 0xbe, 0x92, 0x3a, 0xf9, 0x1c, 0x46,
    0x8e, 0xdb, 0x8d, 0x12, 0x69, 0x6f, 0xde, 0x3b, 0x8f, 0x59, 0xd0, 0x10, 0xb7, 0x62, 0xa3, 0x84,
    0x4d, 0xfb, 0xf3, 0x13, 0xc4, 0x49, 0x4b, 0x9e, 0xc2, 0x50, 0x95, 0x42, 0xee, 0xd2, 0x93, 0x79,
    0xef, 0x7c, 0xc8, 0x48, 0xc9, 0x38, 0xc0, 0xb5, 0xd8, 0xfc, 0x2c, 0xad, 0xe5, 0x85, 0x4c, 0x9e,
    0xc0, 0xc9, 0xba, 0x0b, 0x88, 0x62, 0xf2, 0x3d, 0x8c, 0x31, 0xae, 0xe6, 0xab, 0xb4, 0x3f, 0xef,
    0x9d, 0x4f, 0x2e, 0x3e, 0x7d, 0xd9, 0xa5, 0xd7, 0xe5, 0xc2, 0x5a, 0x9f, 0x24, 0x81, 0x81, 0xe0,
    0x8e, 0xfb, 0x3b, 0xa6, 0xcc, 0xcb, 0xd9, 0x12, 0x86, 0xcb, 0x2d, 0x46, 0x7f, 0x0a, 0xc3, 0x3b,
    0x25, 0xdc, 0x8d, 0x8f, 0x3f, 0x64, 0xa4, 0x60, 0xbe, 0x37, 0x52, 0x15, 0x37, 0xce, 0x5f, 0x30,
    0x64, 0x41, 0x7b, 0x34, 0xd4, 0x25, 0x0c, 0x16, 0x46, 0xf2, 0x64, 0x06, 0xfd, 0x90, 0xe6, 0x90,
    0xf5, 0x95, 0x48, 0x9e, 0x41, 0x54, 0x73, 0x23, 0x4b, 0xa7, 0x44, 0x88, 0xd2, 0xe9, 0x18, 0xa7,
    0xe4, 0x5b, 0xe9, 0xe3, 0xc4, 0xcc, 0xcb, 0xd9, 0x1f, 0x7d, 0x18, 0xbd, 0xe6, 0x5b, 0x69, 0x8e,
    0x43, 0xc5, 0x3e, 0x54, 0xeb, 0xde, 0x3f, 0xb8, 0x23, 0xe6, 0xf6, 0xb5, 0x0c, 0xcc, 0x79, 0x19,
    0x31, 0x2e, 0x84, 0x49, 0x07, 0xe4, 0x87, 0x32, 0x96, 0xc2, 0x8d, 0xe4, 0x4a, 0xa4, 0x43, 0x2a,
    0x85, 0xb4, 0xe4, 0x6b, 0x88, 0x75, 0x55, 0x16, 0xca, 0x35, 0x42, 0xa6, 0xa3, 0x79, 0xef, 0xbc,
    0xcf, 0x0e, 0x00, 0x26, 0xaf, 0xb9, 0x23, 0xe3, 0xd8, 0x1b, 0x3b, 0x1d, 0x6f, 0x31, 0xce, 0xd6,
    0x69, 0x44, 0xb7, 0xa0, 0xec, 0x33, 0xae, 0xd3, 0x38, 0x64, 0x5c, 0xa3, 0x4f, 0x5d, 0x19, 0x97,
    0x02, 0x65, 0x87, 0x32, 0xc6, 0x6c, 0xac, 0x34, 0xbe, 0x92, 0x89, 0xf7, 0xec, 0x74, 0x22, 0xcb,
    0xda, 0xbb, 0xca, 0x88, 0x74, 0x4a, 0xb6, 0x56, 0xc7, 0x27, 0x5a, 0x19, 0x5e, 0x8a, 0xf4, 0xd4,
    0x1b, 0x48, 0xc1, 0x13, 0x46, 0x5a, 0x69, 0x6e, 0xa5, 0x48, 0x67, 0x74, 0xa2, 0xd5, 0xb3, 0x3f,
    0x7b, 0x30, 0xc0, 0x46, 0xf8, 0xd7, 0x7e, 0x7c, 0x06, 0x11, 0x4a, 0x47, 0xa4, 0x76, 0x7a, 0xf2,
    0x15, 0xc4, 0x6b, 0x23, 0xb9, 0x93, 0x39, 0x77, 0xe1, 0x81, 0x22, 0x02, 0x16, 0xee, 0xc8, 0xb8,
    0xda, 0x07, 0x9a, 0x83, 0xf1, 0x87, 0x3d, 0x1a, 0x9b, 0x5a, 0x84, 0x93, 0xc3, 0x50, 0xa1, 0x07,
    0x16, 0x0e, 0x53, 0x91, 0x25, 0x5f, 0x69, 0x22, 0x3b, 0x62, 0x41, 0x4b, 0xbe, 0x84, 0x48, 0xd9,
    0x9c, 0x6b, 0x6e, 0xb6, 0x9e, 0xe9, 0x88, 0x8d, 0x95, 0x5d, 0xa0, 0x8a, 0x26, 0x21, 0x75, 0xfe,
    0x41, 0xf3, 0xc2, 0x93, 0x1d, 0xb1, 0xb1, 0x90, 0xfa, 0x52, 0xf3, 0x22, 0xfb, 0xab, 0x0f, 0x40,
    0xcd, 0xe2, 0xeb, 0x7c, 0xd8, 0x30, 0xdf, 0x00, 0xac, 0xbd, 0x35, 0xa7, 0x99, 0x43, 0x3c, 0x26,
    0x64, 0x29, 0x6c, 0xf2, 0x05, 0x0d, 0x50, 0xae, 0x44, 0x28, 0xd0, 0xf3, 0xb2, 0xc4, 0xc9, 0x8a,
    0x9d, 0xda, 0xca, 0xdc, 0x34, 0x5a, 0xa6, 0x83, 0xf9, 0xc9, 0xf9, 0xe4, 0xe2, 0xc9, 0x61, 0xb6,
    0xde, 0xf0, 0xfd, 0x6b, 0xa7, 0x59, 0x84, 0x2e, 0xac, 0xd1, 0x12, 0xaf, 0x31, 0x92, 0xaf, 0x1d,
    0xf9, 0x53, 0xc5, 0xb1, 0x47, 0xbc, 0xf9, 0x5b, 0x98, 0x92, 0x59, 0xc8, 0x5b, 0xb5, 0xa6, 0xc2,
    0x63, 0x36, 0xf1, 0xd8, 0x1b, 0x0f, 0xdd, 0x2b, 0x71, 0x7c, 0xaf, 0xc4, 0xe4, 0x39, 0x4c, 0x02,
    0x9b, 0x47, 0x04, 0x00, 0x41, 0xde, 0xe1, 0xc0, 0x68, 0x7c, 0x8f, 0xd1, 0x04, 0x06, 0xf6, 0xa8,
    0xf7, 0x50, 0xc6, 0x8a, 0x95, 0xcd, 0x3f, 0x34, 0x5a, 0xfb, 0xd6, 0x8b, 0xd8, 0x48, 0xd9, 0xcb,
    0x46, 0xeb, 0x24, 0x83, 0x53, 0xad, 0xca, 0x4d, 0x5e, 0x98, 0xaa, 0xa9, 0x91, 0x10, 0xea, 0xbe,
    0x09, 0x82, 0x3f, 0x22, 0xb6, 0x14, 0xd9, 0x15, 0x8c, 0xa8, 0x74, 0xdc, 0x45, 0x82, 0xef, 0xc3,
    0x90, 0xa3, 0x98, 0x5c, 0x00, 0x10, 0x63, 0xbc, 0x2c, 0xa4, 0xdf, 0x6e, 0xf7, 0xd7, 0x11, 0x52,
    0x85, 0x26, 0xe6, 0x89, 0xf5, 0x62, 0xf6, 0x0a, 0xe2, 0x0e, 0xc7, 0xee, 0xb6, 0x8e, 0x1b, 0x17,
    0x5e, 0x8f, 0x14, 0xbc, 0x48, 0x96, 0x22, 0xbc, 0x1c, 0x8a, 0xd9, 0x7b, 0x18, 0xbf, 0xad, 0xf4,
    0xbe, 0xa8, 0xca, 0xff, 0xb5, 0x1e, 0xbe, 0x83, 0x51, 0x5d, 0xa9, 0xd2, 0xd9, 0xf0, 0x8c, 0x9f,
    0x1c, 0x72, 0x7a, 0x8b, 0x38, 0x0b, 0xe6, 0xec, 0x05, 0x0c, 0x3d, 0x90, 0x4c, 0xa1, 0xb7, 0x0b,
    0x41, 0x7b, 0x3b, 0xd4, 0xf6, 0x21, 0x60, 0x6f, 0x9f, 0xfd, 0xdd, 0x87, 0xd9, 0xa1, 0xdd, 0x16,
    0xa6, 0xb0, 0x1f, 0x25, 0x71, 0x06, 0xb3, 0xd0, 0x72, 0x6d, 0x6b, 0xd1, 0xe9, 0xe9, 0xba, 0x3b,
    0xb7, 0x14, 0x7e, 0x7e, 0xda, 0xc6, 0xec, 0x86, 0x2b, 0xf4, 0x25, 0xb6, 0x53, 0x4d, 0x25, 0xa2,
    0x95, 0xa6, 0x2b, 0x0e, 0xc8, 0x52, 0x24, 0x9f, 0xf9, 0x4f, 0x24, 0x0f, 0x9b, 0x0c, 0xa9, 0x12,
    0x18, 0x32, 0x83, 0x53, 0x84, 0xb9, 0x29, 0x72, 0xae, 0x15, 0xb7, 0x6d, 0x9b, 0x59, 0x81, 0x89,
    0x2e, 0x10, 0xc2, 0x79, 0xaf, 0x6a, 0x69, 0xb8, 0xab, 0x8c, 0x6f, 0xb3, 0x98, 0x75, 0x7a, 0xf2,
    0x02, 0x4e, 0x5b, 0x39, 0xf7, 0x1b, 0x95, 0xf6, 0xda, 0xb4, 0x05, 0xdf, 0xe1, 0x66, 0x3d, 0xba,
    0xe4, 0x96, 0xeb, 0x46, 0x86, 0x55, 0x17, 0x2e, 0x79, 0x8f, 0xd0, 0xa3, 0x7d, 0x77, 0x06, 0x33,
    0x9c, 0x8d, 0xfc, 0x4e, 0xb9, 0x9b, 0xbc, 0x94, 0x3b, 0x17, 0x36, 0xdf, 0x14, 0xd1, 0x5f, 0x95,
    0xbb, 0xb9, 0x92, 0x3b, 0x87, 0x53, 0xf0, 0xa0, 0xff, 0xc6, 0x45, 0xe8, 0xbd, 0xdf, 0xfb, 0x70,
    0x72, 0x2d, 0x3e, 0x9e, 0xf0, 0xe7, 0x30, 0x09, 0x8b, 0x08, 0xfb, 0x2a, 0x70, 0x0d, 0x04, 0x61,
    0x73, 0x1d, 0x8d, 0x8f, 0x77, 0x20, 0xae, 0xc3, 0xf8, 0x78, 0x87, 0xff, 0x5c, 0x65, 0xc7, 0x73,
    0x49, 0x6c, 0x77, 0x73, 0x99, 0xc2, 0x98, 0x06, 0x4d, 0x04, 0xa6, 0x5b, 0x15, 0x0f, 0x21, 0x49,
    0xbe, 0x17, 0x89, 0xe5, 0xb1, 0x15, 0x9b, 0xab, 0xf0, 0x5b, 0xa9, 0x75, 0x55, 0xb6, 0x7f, 0x06,
    0xca, 0xd8, 0xe3, 0x8d, 0xd1, 0x81, 0x49, 0x14, 0x93, 0x33, 0x18, 0x70, 0x53, 0xd8, 0x14, 0x1e,
    0x6e, 0x9e, 0x6b, 0x4f, 0x33, 0xf3, 0xd6, 0xec, 0xb7, 0x1e, 0x8c, 0x08, 0xc0, 0xe1, 0xa1, 0x37,
    0xa7, 0xfa, 0x49, 0x79, 0xec, 0x77, 0xed, 0xbe, 0xcb, 0xf0, 0x35, 0xb6, 0xdf, 0xe5, 0xb6, 0xb1,
    0xb4, 0xaa, 0x23, 0xe6, 0x65, 0x8c, 0x48, 0xa3, 0x4c, 0xb5, 0x91, 0xd2, 0x3d, 0xed, 0xf8, 0xf0,
    0xb4, 0xab, 0x91, 0xcf, 0xee, 0xd5, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x23, 0x7c, 0x95,
    0x1b, 0x09, 0x00, 0x00,
    // 1455 bytes of a gzipped FileDescriptorProto
    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0x4f, 0x6f, 0x1c, 0xc5,
    0x12, 0xd7, 0xfe, 0xdf, 0xa9, 0x5d, 0xfb, 0x25, 0xf3, 0xf2, 0xde, 0x9b, 0x97, 0xf7, 0x20, 0xce,
    0xc4, 0x02, 0x23, 0x44, 0x10, 0xce, 0x1d, 0xc9, 0xc4, 0x18, 0xad, 0x94, 0x38, 0xa6, 0x13, 0x82,
    0x04, 0x87, 0x55, 0xef, 0x74, 0xef, 0xec, 0xc4, 0xbd, 0x33, 0x43, 0x77, 0x4f, 0xec, 0xb9, 0xf3,
    0x01, 0xf8, 0x58, 0x1c, 0xf8, 0x0e, 0x9c, 0xb8, 0xf0, 0x05, 0xb8, 0xa2, 0xaa, 0xee, 0x99, 0x5d,
    0xc7, 0x0e, 0x42, 0xe2, 0xca, 0xad, 0x7e, 0x55, 0x35, 0xd5, 0x5d, 0xbf, 0xae, 0xaa, 0xee, 0x81,
    0xdd, 0x52, 0x17, 0xb6, 0x58, 0x9b, 0xf4, 0x21, 0x09, 0xe1, 0xb8, 0xc1, 0xf1, 0x97, 0x10, 0xbc,
    0xe0, 0xe6, 0xfc, 0x09, 0x5f, 0x48, 0x15, 0xfe, 0x1b, 0x86, 0x96, 0x9b, 0xf3, 0x4c, 0x44, 0x9d,
    0xbd, 0xce, 0x41, 0xc0, 0x3c, 0x42, 0xbd, 0x11, 0xe7, 0x99, 0x30, 0x51, 0x77, 0xaf, 0x87, 0x7a,
    0x87, 0xc2, 0x3b, 0x30, 0xc8, 0x72, 0x21, 0x2f, 0xa3, 0xde, 0x5e, 0xe7, 0x60, 0xc0, 0x1c, 0x88,
    0x39, 0xc0, 0x73, 0x71, 0xfe, 0x54, 0x1a, 0xc3, 0x53, 0x19, 0xde, 0x82, 0x5e, 0xd2, 0x06, 0x44,
    0x31, 0xfc, 0x08, 0x46, 0x18, 0x57, 0xf1, 0x45, 0xd4, 0xdd, 0xeb, 0x1c, 0x4c, 0x0e, 0xff, 0xf9,
    0xb0, 0xdd, 0x5e, 0xbb, 0x17, 0xd6, 0xf8, 0x84, 0x21, 0xf4, 0x05, 0xb7, 0x9c, 0xd6, 0x98, 0x32,
    0x92, 0xe3, 0x19, 0x0c, 0x66, 0x6b, 0x8c, 0x7e, 0x07, 0x06, 0x17, 0x99, 0xb0, 0x2b, 0x8a, 0x3f,
    0x60, 0x0e, 0xe0, 0x7e, 0x57, 0x32, 0x4b, 0x57, 0x96, 0x16, 0x18, 0x30, 0x8f, 0x6e, 0x0c, 0x75,
    0x02, 0xfd, 0x23, 0x2d, 0x79, 0xb8, 0x0b, 0x5d, 0xbf, 0xcd, 0x01, 0xeb, 0x66, 0x22, 0xbc, 0x0b,
    0xe3, 0x92, 0x6b, 0x99, 0xdb, 0x4c, 0xf8, 0x28, 0x2d, 0xc6, 0x38, 0x39, 0x5f, 0x4b, 0x8a, 0x13,
    0x30, 0x92, 0xe3, 0x1f, 0xbb, 0x30, 0x7c, 0xcc, 0xd7, 0x52, 0x6f, 0x87, 0x0a, 0x28, 0x54, 0xe3,
    0xde, 0xdd, 0xb8, 0xa3, 0xce, 0xd6, 0xa5, 0xf4, 0xcc, 0x91, 0x8c, 0x3a, 0x2e, 0x84, 0x8e, 0xfa,
    0xce, 0x0f, 0x65, 0x4c, 0x85, 0x6b, 0xc9, 0x33, 0x11, 0x0d, 0x5c, 0x2a, 0x0e, 0x85, 0xff, 0x87,
    0x40, 0x15, 0x79, 0x9a, 0xd9, 0x4a, 0xc8, 0x68, 0xb8, 0xd7, 0x39, 0xe8, 0xb2, 0x8d, 0x02, 0x37,
    0xaf, 0xb8, 0x75, 0xc6, 0x11, 0x19, 0x5b, 0x8c, 0xab, 0x68, 0x6b, 0xca, 0x68, 0xec, 0x56, 0x41,
    0x99, 0x76, 0x5c, 0x46, 0x81, 0xdf, 0x71, 0x89, 0x3e, 0x65, 0xa1, 0x6d, 0x04, 0x6e, 0x77, 0x28,
    0x63, 0xcc, 0xca, 0x48, 0x4d, 0x99, 0x4c, 0xc8, 0xb3, 0xc5, 0x8e, 0x2c, 0x63, 0x2e, 0x0a, 0x2d,
    0xa2, 0xa9, 0xb3, 0x35, 0x18, 0x8f, 0x68, 0xa1, 0x79, 0x2e, 0xa2, 0x1d, 0x32, 0x38, 0x80, 0x5f,
    0x68, 0x69, 0xa4, 0x7e, 0x2d, 0x45, 0xb4, 0xeb, 0xbe, 0x68, 0x70, 0xfc, 0x73, 0x07, 0xfa, 0x58,
    0x08, 0x6f, 0xad, 0xc7, 0xbb, 0x30, 0x46, 0x69, 0x8b, 0xd4, 0x16, 0x87, 0xff, 0x83, 0x20, 0xd1,
    0x92, 0x5b, 0x39, 0xe7, 0xd6, 0x1f, 0xd0, 0xd8, 0x29, 0x8e, 0xec, 0x96, 0x71, 0x51, 0x7b, 0x9a,
    0xbd, 0xf1, 0xb3, 0x1a, 0x8d, 0x55, 0x29, 0xfc, 0x97, 0x03, 0x9f, 0x21, 0x29, 0x8e, 0x2c, 0x6e,
    0x45, 0xe6, 0x7c, 0xa1, 0x1c, 0xd9, 0x63, 0xe6, 0x51, 0xf8, 0x5f, 0x18, 0x67, 0x66, 0xce, 0x15,
    0xd7, 0x6b, 0x62, 0x7a, 0xcc, 0x46, 0x99, 0x39, 0x42, 0x88, 0x26, 0x21, 0xd5, 0x7c, 0xa9, 0x78,
    0x4a, 0x64, 0x8f, 0xd9, 0x48, 0x48, 0x75, 0xa2, 0x78, 0x1a, 0xff, 0xda, 0x05, 0x70, 0xc5, 0x42,
    0x79, 0xbe, 0x59, 0x30, 0xef, 0x00, 0x24, 0x64, 0x9d, 0xbb, 0x9e, 0x43, 0x7d, 0xe0, 0x34, 0x33,
    0x61, 0xc2, 0xff, 0xb8, 0x06, 0x9a, 0x67, 0xc2, 0x27, 0x48, 0xbc, 0xcc, 0xb0, 0xb3, 0x02, 0x9b,
    0xad, 0xe5, 0x5c, 0x57, 0x4a, 0x46, 0xfd, 0xbd, 0xde, 0xc1, 0xe4, 0xf0, 0xd6, 0xa6, 0xb7, 0x8e,
    0x79, 0xfd, 0xd8, 0x2a, 0x36, 0x46, 0x17, 0x56, 0x29, 0x89, 0xcb, 0x68, 0xc9, 0x13, 0xeb, 0xfc,
    0x5d, 0xc6, 0x01, 0x69, 0xc8, 0x7c, 0x1f, 0xa6, 0xce, 0x2c, 0xe4, 0xeb, 0x2c, 0x71, 0x89, 0x07,
    0x6c, 0x42, 0xba, 0x63, 0x52, 0x5d, 0x49, 0x71, 0x74, 0x25, 0xc5, 0xf0, 0x1e, 0x4c, 0x3c, 0x9b,
    0x5b, 0x04, 0x80, 0x53, 0x91, 0xc3, 0x86, 0xd1, 0xe0, 0x0a, 0xa3, 0x21, 0xf4, 0xcd, 0x56, 0xed,
    0xa1, 0x8c, 0x19, 0x67, 0x66, 0xbe, 0xac, 0x94, 0xa2, 0xd2, 0x1b, 0xb3, 0x61, 0x66, 0x4e, 0x2a,
    0xa5, 0xc2, 0x18, 0x76, 0x54, 0x96, 0x9f, 0xcf, 0x53, 0x5d, 0x54, 0x25, 0x12, 0xe2, 0xaa, 0x6f,
    0x82, 0xca, 0x2f, 0x50, 0x37, 0x13, 0xf1, 0x29, 0x0c, 0x5d, 0xea, 0x38, 0x8b, 0x04, 0xaf, 0x7d,
    0x93, 0xa3, 0x18, 0x1e, 0x02, 0x38, 0xc6, 0x78, 0x9e, 0x4a, 0x9a, 0x6e, 0x57, 0xc7, 0x11, 0x52,
    0x85, 0x26, 0x46, 0xc4, 0x92, 0x18, 0x3f, 0x82, 0xa0, 0xd5, 0x63, 0x75, 0x1b, 0xcb, 0xb5, 0xf5,
    0xa7, 0xe7, 0x00, 0x2e, 0x24, 0x73, 0xe1, 0x4f, 0x0e, 0xc5, 0xf8, 0x25, 0x8c, 0xce, 0x0a, 0x55,
    0xa7, 0x45, 0xfe, 0xa7, 0xc6, 0xc3, 0xfb, 0x30, 0x2c, 0x8b, 0x2c, 0xb7, 0xc6, 0x1f, 0xe3, 0x3f,
    0x36, 0x7b, 0x3a, 0x43, 0x3d, 0xf3, 0xe6, 0xf8, 0xb7, 0x2e, 0xec, 0x6e, 0x2a, 0xe9, 0x48, 0xa7,
    0xe6, 0x5a, 0xfc, 0x7d, 0xd8, 0xf5, 0xd5, 0xd4, 0x54, 0x8d, 0x5b, 0x69, 0x9a, 0xb4, 0xdf, 0xcd,
    0x04, 0xb5, 0x46, 0x53, 0x73, 0x6d, 0xdf, 0xf8, 0x92, 0xc3, 0x4a, 0x29, 0xdd, 0xee, 0xd1, 0xea,
    0x1a, 0x27, 0xf0, 0x9a, 0x99, 0x08, 0xff, 0x45, 0xf7, 0xc3, 0xdc, 0x0f, 0x29, 0x64, 0x41, 0x60,
    0xc8, 0x18, 0x76, 0x50, 0xcd, 0x75, 0x3a, 0xe7, 0x2a, 0xe3, 0xa6, 0xa9, 0x20, 0x23, 0x70, 0xa3,
    0x47, 0xa8, 0xc2, 0x56, 0x2e, 0x4a, 0xa9, 0xb9, 0x2d, 0x34, 0x55, 0x50, 0xc0, 0x5a, 0x1c, 0x3e,
    0x80, 0x9d, 0x46, 0x9e, 0xd3, 0xb0, 0x74, 0x23, 0x6b, 0xda, 0x28, 0x5f, 0xe0, 0xd0, 0xdc, 0x5a,
    0xe4, 0x35, 0x57, 0x95, 0xf4, 0x53, 0xcc, 0x2f, 0xf2, 0x12, 0x55, 0x37, 0x96, 0xd4, 0x3e, 0xec,
    0x62, 0xd9, 0xcf, 0x2f, 0x32, 0xbb, 0x9a, 0xe7, 0xf2, 0xd2, 0xfa, 0xa1, 0x36, 0x45, 0xed, 0xd7,
    0x99, 0x5d, 0x9d, 0xca, 0x4b, 0x8b, 0x05, 0xfe, 0x46, 0x69, 0x8d, 0x52, 0x5f, 0x56, 0x3f, 0x74,
    0xa1, 0xf7, 0x5c, 0x5c, 0x6f, 0xde, 0x7b, 0x30, 0xf1, 0x33, 0x06, 0x4b, 0xc6, 0x73, 0x0d, 0x4e,
    0x85, 0x75, 0xb3, 0xd5, 0x19, 0xe4, 0xe0, 0xb8, 0xf6, 0x9d, 0x41, 0x0e, 0x7f, 0x38, 0xa5, 0xb6,
    0x5b, 0xce, 0xb1, 0xdd, 0xb6, 0x5c, 0x04, 0x23, 0xd7, 0x43, 0xc2, 0x33, 0xdd, 0x40, 0xfc, 0x08,
    0x49, 0xa2, 0x32, 0x73, 0x2c, 0x8f, 0x8c, 0x38, 0x3f, 0xf5, 0x17, 0x51, 0x96, 0x14, 0x79, 0x73,
    0x1d, 0xa0, 0x8c, 0xe5, 0x5b, 0x69, 0xe5, 0x99, 0x44, 0x31, 0xdc, 0x87, 0x3e, 0xd7, 0xa9, 0x89,
    0xe0, 0xcd, 0xa1, 0xf2, 0x9c, 0x68, 0x66, 0x64, 0x8d, 0xbf, 0xef, 0xc0, 0xd0, 0x29, 0xb0, 0x2f,
    0xdc, 0x99, 0xbb, 0xfc, 0x1d, 0xb8, 0xe9, 0xe2, 0x6c, 0x6f, 0x42, 0x7f, 0xeb, 0x35, 0x37, 0xe1,
    0xba, 0x32, 0x6e, 0x0a, 0x8f, 0x19, 0xc9, 0x18, 0xd1, 0x75, 0xa9, 0xcb, 0xcd, 0x81, 0xf6, 0x68,
    0x47, 0x9b, 0xa3, 0x8d, 0x1f, 0xc0, 0x80, 0x9a, 0x24, 0x9c, 0x42, 0xe7, 0xd2, 0x77, 0x7b, 0xe7,
    0x12, 0x51, 0xed, 0xaf, 0xf2, 0x4e, 0x1d, 0x7f, 0x03, 0x7d, 0x26, 0x13, 0x7a, 0x13, 0x28, 0xb9,
    0xb4, 0xde, 0x8d, 0x64, 0xcc, 0xdf, 0x16, 0xa5, 0xf7, 0x45, 0x91, 0x16, 0xa7, 0x07, 0x85, 0x7f,
    0xe9, 0x10, 0xc0, 0x11, 0xb6, 0x28, 0xac, 0x2d, 0xd6, 0xb4, 0xf9, 0x01, 0xf3, 0x28, 0x4e, 0x21,
    0x38, 0xe1, 0x89, 0x3c, 0xca, 0x53, 0x45, 0x0f, 0xa0, 0x9a, 0x5f, 0x34, 0x43, 0xa7, 0xe6, 0x17,
    0x18, 0xac, 0xcc, 0x6c, 0xb2, 0xf2, 0x0b, 0x38, 0x40, 0xf7, 0x72, 0xa1, 0x54, 0xf3, 0x22, 0x40,
    0x39, 0x7c, 0x17, 0x20, 0x29, 0xf2, 0x65, 0x26, 0x64, 0x9e, 0x38, 0x86, 0xba, 0x6c, 0x4b, 0x13,
    0x5f, 0x02, 0xbc, 0x58, 0x2d, 0x2d, 0x93, 0xa6, 0x52, 0xb4, 0x9d, 0x54, 0xe6, 0x42, 0x6a, 0xbf,
    0x98, 0x47, 0xb8, 0x03, 0x9e, 0xca, 0x26, 0x1d, 0xee, 0x58, 0xd3, 0x3c, 0x69, 0x5f, 0x1f, 0x28,
    0x53, 0x32, 0x92, 0x57, 0xb6, 0x6e, 0x93, 0x21, 0x44, 0x13, 0x6e, 0x9d, 0xf9, 0x0b, 0x62, 0xc0,
    0x1c, 0x88, 0x7f, 0xea, 0xc2, 0x08, 0x73, 0x3c, 0x2b, 0x4c, 0xf8, 0x1e, 0x0c, 0x75, 0x82, 0x80,
    0xd6, 0x9d, 0x1c, 0xee, 0x6e, 0xca, 0x03, 0x29, 0x66, 0xde, 0x8a, 0xd7, 0x53, 0x69, 0x9f, 0xc8,
    0xa5, 0xfd, 0xbc, 0x96, 0xfe, 0xe9, 0x77, 0x6d, 0xae, 0x6d, 0x3c, 0xc2, 0x8f, 0x01, 0x4a, 0xcb,
    0x90, 0x68, 0xf4, 0xef, 0xdd, 0xec, 0xbf, 0xe5, 0x12, 0x7e, 0x00, 0xa3, 0xd2, 0x3e, 0x2d, 0x2a,
    0xbb, 0xa2, 0x14, 0x6e, 0xf0, 0x6e, 0xec, 0x34, 0x5f, 0xed, 0x69, 0x61, 0x5c, 0x56, 0x37, 0xce,
    0x57, 0x32, 0x87, 0x1f, 0xc2, 0x70, 0x49, 0xe7, 0x48, 0x65, 0x77, 0xe5, 0x72, 0x68, 0x8f, 0x98,
    0x79, 0x17, 0x6c, 0xc0, 0xef, 0x2a, 0xae, 0x32, 0x5b, 0xfb, 0x7a, 0x6c, 0x20, 0x1e, 0xe4, 0x92,
    0x27, 0x19, 0x57, 0xc7, 0xf8, 0xfe, 0x1c, 0xd3, 0xfb, 0x73, 0x4b, 0x13, 0xff, 0xd2, 0x85, 0x31,
    0xc6, 0x9b, 0xe5, 0xcb, 0xe2, 0x6f, 0x3e, 0xff, 0x32, 0x9f, 0x58, 0xcc, 0x4b, 0xa4, 0xf3, 0x98,
    0x86, 0x58, 0x8f, 0x79, 0x14, 0x7f, 0x05, 0xa3, 0x67, 0x8b, 0x57, 0xc4, 0xf2, 0x3e, 0x0c, 0x74,
    0xf2, 0x6c, 0xf1, 0xea, 0x2d, 0x24, 0x3b, 0x23, 0x8d, 0x82, 0x7a, 0x33, 0x0a, 0x6a, 0xf7, 0x36,
    0xd6, 0xc5, 0x82, 0x08, 0xec, 0x32, 0x92, 0xe3, 0x6f, 0xe1, 0xf6, 0x19, 0xd7, 0x7c, 0x4d, 0x1d,
    0xa1, 0xf1, 0x7e, 0xb2, 0x75, 0xf8, 0x00, 0x7a, 0x65, 0x61, 0x7c, 0xf8, 0xdb, 0x57, 0xf3, 0x3c,
    0x2b, 0x0c, 0x43, 0x6b, 0x78, 0x1f, 0x7a, 0xd9, 0x3a, 0xbd, 0x7e, 0x7a, 0xf4, 0x7b, 0xc3, 0xd0,
    0x16, 0x7f, 0x0a, 0xb7, 0xda, 0xe0, 0x8f, 0x8b, 0x35, 0xfe, 0x85, 0x60, 0x53, 0x2e, 0x25, 0xb7,
    0x9f, 0x50, 0xf4, 0x29, 0x73, 0xa0, 0xd1, 0x1e, 0x52, 0x38, 0xaf, 0x3d, 0x5c, 0x0c, 0x29, 0xe8,
    0xa3, 0xdf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xd0, 0xd3, 0x67, 0xb1, 0x05, 0x0e, 0x00, 0x00,
}
protomsg.proto
@@ -92,12 +92,6 @@
    repeated Point points = 4;//点的集合
}
//Point struct
message Point {
    string x = 1;
    string y = 2;
}
message CameraTaskArgs {
    string id =1;
    string camera_task_id =2;
@@ -136,4 +130,65 @@
    bool must = 5;//参数是否必填
    string range = 6;//参数的范围
    int32 sort = 7;//参数排序
}
}
// struct for sdk
message Point{
    int32 x = 1;
    int32 y = 2;
}
message Rect{
    int32 left = 1;
    int32 top = 2;
    int32 right = 3;
    int32 bottom = 4;
}
message FaceAngle{
    int32 yaw = 1;
    int32 pitch =2;
    int32 roll = 3;
    float confidence =4;
}
message ThftResult{
    int32 gender = 1;
    int32 age = 2;
    int32 race = 3;
    int32 beauty = 4;
    int32 smile = 5;
}
message FacePos{
    Rect rcFace = 1;
    Point ptLeftEye = 2;
    Point ptRightEye = 3;
    Point ptMouth = 4;
    Point ptNose = 5;
    FaceAngle fAngle = 6;
    int32 quality = 7;
    bytes facialData = 8;
}
message FaceInfo{
    Rect rcFace = 1;
    Point ptLeftEye = 2;
    Point ptRightEye = 3;
    Point ptMouth = 4;
    Point ptNose = 5;
    FaceAngle fAngle = 6;
    int32 quality = 7;
    bytes facialData = 8;
    int64 faceID = 9;
}
message ObjInfo{
    Rect rcObj = 1;
    int32 typ = 2;
    float prob = 3;
}
// sdk face property
message ParamFaceProperty{
    FacePos pos = 1;
    Image img = 2;
}
// sdk face extract
message ParamFaceCompare{
    bytes feat1 = 1;
    bytes feat2 = 2;
}