zhangmeng
2019-11-19 54e26e896cafc1e63d6626b9eb0f6bfcbf0bbb0b
add cloud plate detect
2个文件已修改
951 ■■■■■ 已修改文件
sdk.pb.go 923 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sdk.proto 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sdk.pb.go
@@ -1082,6 +1082,191 @@
    return nil
}
// cloud
type PlateCloudID struct {
    License      string `protobuf:"bytes,1,opt,name=license,proto3" json:"license,omitempty"`
    RcLocation   *Rect  `protobuf:"bytes,2,opt,name=rcLocation,proto3" json:"rcLocation,omitempty"`
    NConfidence  int32  `protobuf:"varint,3,opt,name=nConfidence,proto3" json:"nConfidence,omitempty"`
    NType        int32  `protobuf:"varint,4,opt,name=nType,proto3" json:"nType,omitempty"`
    NDirection   int32  `protobuf:"varint,5,opt,name=nDirection,proto3" json:"nDirection,omitempty"`
    NCarColor    int32  `protobuf:"varint,6,opt,name=nCarColor,proto3" json:"nCarColor,omitempty"`
    NCarColor1   int32  `protobuf:"varint,7,opt,name=nCarColor1,proto3" json:"nCarColor1,omitempty"`
    NCarBright   int32  `protobuf:"varint,8,opt,name=nCarBright,proto3" json:"nCarBright,omitempty"`
    FrameNo      int32  `protobuf:"varint,9,opt,name=frameNo,proto3" json:"frameNo,omitempty"`
    FaceWidth    int32  `protobuf:"varint,10,opt,name=faceWidth,proto3" json:"faceWidth,omitempty"`
    FaceHeight   int32  `protobuf:"varint,11,opt,name=faceHeight,proto3" json:"faceHeight,omitempty"`
    GrayFaceFlag int32  `protobuf:"varint,12,opt,name=grayFaceFlag,proto3" json:"grayFaceFlag,omitempty"`
    CharNum      int32  `protobuf:"varint,13,opt,name=charNum,proto3" json:"charNum,omitempty"`
}
func (m *PlateCloudID) Reset()         { *m = PlateCloudID{} }
func (m *PlateCloudID) String() string { return proto.CompactTextString(m) }
func (*PlateCloudID) ProtoMessage()    {}
func (*PlateCloudID) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{14}
}
func (m *PlateCloudID) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
}
func (m *PlateCloudID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_PlateCloudID.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
}
func (m *PlateCloudID) XXX_Merge(src proto.Message) {
    xxx_messageInfo_PlateCloudID.Merge(m, src)
}
func (m *PlateCloudID) XXX_Size() int {
    return m.Size()
}
func (m *PlateCloudID) XXX_DiscardUnknown() {
    xxx_messageInfo_PlateCloudID.DiscardUnknown(m)
}
var xxx_messageInfo_PlateCloudID proto.InternalMessageInfo
func (m *PlateCloudID) GetLicense() string {
    if m != nil {
        return m.License
    }
    return ""
}
func (m *PlateCloudID) GetRcLocation() *Rect {
    if m != nil {
        return m.RcLocation
    }
    return nil
}
func (m *PlateCloudID) GetNConfidence() int32 {
    if m != nil {
        return m.NConfidence
    }
    return 0
}
func (m *PlateCloudID) GetNType() int32 {
    if m != nil {
        return m.NType
    }
    return 0
}
func (m *PlateCloudID) GetNDirection() int32 {
    if m != nil {
        return m.NDirection
    }
    return 0
}
func (m *PlateCloudID) GetNCarColor() int32 {
    if m != nil {
        return m.NCarColor
    }
    return 0
}
func (m *PlateCloudID) GetNCarColor1() int32 {
    if m != nil {
        return m.NCarColor1
    }
    return 0
}
func (m *PlateCloudID) GetNCarBright() int32 {
    if m != nil {
        return m.NCarBright
    }
    return 0
}
func (m *PlateCloudID) GetFrameNo() int32 {
    if m != nil {
        return m.FrameNo
    }
    return 0
}
func (m *PlateCloudID) GetFaceWidth() int32 {
    if m != nil {
        return m.FaceWidth
    }
    return 0
}
func (m *PlateCloudID) GetFaceHeight() int32 {
    if m != nil {
        return m.FaceHeight
    }
    return 0
}
func (m *PlateCloudID) GetGrayFaceFlag() int32 {
    if m != nil {
        return m.GrayFaceFlag
    }
    return 0
}
func (m *PlateCloudID) GetCharNum() int32 {
    if m != nil {
        return m.CharNum
    }
    return 0
}
type PlateCloudIDResult struct {
    Result []*PlateCloudID `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"`
}
func (m *PlateCloudIDResult) Reset()         { *m = PlateCloudIDResult{} }
func (m *PlateCloudIDResult) String() string { return proto.CompactTextString(m) }
func (*PlateCloudIDResult) ProtoMessage()    {}
func (*PlateCloudIDResult) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{15}
}
func (m *PlateCloudIDResult) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
}
func (m *PlateCloudIDResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_PlateCloudIDResult.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
}
func (m *PlateCloudIDResult) XXX_Merge(src proto.Message) {
    xxx_messageInfo_PlateCloudIDResult.Merge(m, src)
}
func (m *PlateCloudIDResult) XXX_Size() int {
    return m.Size()
}
func (m *PlateCloudIDResult) XXX_DiscardUnknown() {
    xxx_messageInfo_PlateCloudIDResult.DiscardUnknown(m)
}
var xxx_messageInfo_PlateCloudIDResult proto.InternalMessageInfo
func (m *PlateCloudIDResult) GetResult() []*PlateCloudID {
    if m != nil {
        return m.Result
    }
    return nil
}
func init() {
    proto.RegisterType((*Image)(nil), "protomsg.Image")
    proto.RegisterType((*FaceAngle)(nil), "protomsg.FaceAngle")
@@ -1097,74 +1282,85 @@
    proto.RegisterType((*SoInfo)(nil), "protomsg.SoInfo")
    proto.RegisterType((*PlateID)(nil), "protomsg.PlateID")
    proto.RegisterType((*PlateIDResult)(nil), "protomsg.PlateIDResult")
    proto.RegisterType((*PlateCloudID)(nil), "protomsg.PlateCloudID")
    proto.RegisterType((*PlateCloudIDResult)(nil), "protomsg.PlateCloudIDResult")
}
func init() { proto.RegisterFile("sdk.proto", fileDescriptor_70decb0fb6f436df) }
var fileDescriptor_70decb0fb6f436df = []byte{
    // 992 bytes of a gzipped FileDescriptorProto
    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4f, 0x6f, 0xdc, 0x44,
    0x14, 0x8f, 0x77, 0xe3, 0xfd, 0xf3, 0x36, 0x4d, 0xd2, 0x49, 0x85, 0xac, 0x08, 0xad, 0x56, 0x06,
    0xb5, 0x5b, 0x51, 0x42, 0x15, 0x10, 0x48, 0x9c, 0x20, 0xd9, 0x46, 0x5d, 0x29, 0x4d, 0xa3, 0xa1,
    0x12, 0xe2, 0x38, 0x6b, 0xcf, 0xee, 0x3a, 0xb1, 0x3d, 0xc6, 0x9e, 0x55, 0xbb, 0xe2, 0x13, 0x70,
    0xe3, 0x63, 0x71, 0xec, 0x91, 0x23, 0x4a, 0xe0, 0x23, 0x70, 0x47, 0xef, 0xcd, 0xf8, 0x4f, 0xc3,
    0x96, 0x13, 0x47, 0x4e, 0x9e, 0xdf, 0x7b, 0x3f, 0xcf, 0xfb, 0xff, 0x6c, 0xe8, 0x17, 0xe1, 0xf5,
    0x51, 0x96, 0x2b, 0xad, 0x58, 0x8f, 0x1e, 0x49, 0xb1, 0x38, 0x84, 0x99, 0x28, 0xa4, 0x91, 0xfa,
    0x3f, 0x3b, 0xe0, 0x4e, 0x13, 0xb1, 0x90, 0xec, 0x01, 0xb8, 0xaf, 0xa3, 0x50, 0x2f, 0x3d, 0x67,
    0xe4, 0x8c, 0x5d, 0x6e, 0x00, 0xfb, 0x00, 0x3a, 0x4b, 0x19, 0x2d, 0x96, 0xda, 0x6b, 0x91, 0xd8,
    0x22, 0xc6, 0x60, 0x3b, 0x14, 0x5a, 0x78, 0xed, 0x91, 0x33, 0xde, 0xe1, 0x74, 0x66, 0x1f, 0x42,
    0x5f, 0x47, 0x89, 0x2c, 0xb4, 0x48, 0x32, 0x6f, 0x7b, 0xe4, 0x8c, 0xfb, 0xbc, 0x16, 0xb0, 0x5d,
    0x68, 0x45, 0xa1, 0xe7, 0x8e, 0x9c, 0x71, 0x9b, 0xb7, 0xa2, 0x90, 0xed, 0x43, 0x3b, 0x88, 0x42,
    0xaf, 0x43, 0x3c, 0x3c, 0xfa, 0x0b, 0xe8, 0x9f, 0x89, 0x40, 0x7e, 0x9b, 0x2e, 0x62, 0x89, 0xea,
    0xb5, 0x78, 0x6d, 0x9d, 0xc1, 0x23, 0x3a, 0x98, 0x45, 0x3a, 0x58, 0x5a, 0x4f, 0x0c, 0x40, 0x47,
    0x72, 0x15, 0xc7, 0xe4, 0x88, 0xcb, 0xe9, 0xcc, 0x86, 0x00, 0x81, 0x4a, 0xe7, 0x51, 0x28, 0xd3,
    0x40, 0x92, 0x27, 0x2d, 0xde, 0x90, 0xf8, 0x6f, 0x00, 0x5e, 0x2d, 0xe7, 0x9a, 0xcb, 0x62, 0x15,
    0x6b, 0x0c, 0x71, 0x21, 0xd3, 0x50, 0xe6, 0xd6, 0x98, 0x45, 0xe8, 0x81, 0x58, 0x48, 0x6b, 0x0d,
    0x8f, 0x64, 0x4b, 0x04, 0xb2, 0xb2, 0x25, 0x02, 0x89, 0x6f, 0xcf, 0xa4, 0x58, 0xe9, 0x35, 0xd9,
    0x71, 0xb9, 0x45, 0xe8, 0x6d, 0x91, 0x44, 0xb1, 0xa4, 0x88, 0x5d, 0x6e, 0x80, 0xff, 0x47, 0x0b,
    0xba, 0x18, 0xe3, 0xa5, 0x2a, 0xd8, 0x43, 0xe8, 0xe4, 0x01, 0x02, 0xb2, 0x3b, 0x38, 0xde, 0x3d,
    0x2a, 0x2b, 0x74, 0xc4, 0x65, 0xa0, 0xb9, 0xd5, 0xb2, 0x4f, 0xa1, 0x9f, 0xe9, 0x73, 0x39, 0xd7,
    0xcf, 0xd6, 0xc6, 0x9b, 0xc1, 0xf1, 0x5e, 0x4d, 0xbd, 0x54, 0x51, 0xaa, 0x79, 0xcd, 0x60, 0x9f,
    0x01, 0x64, 0x9a, 0x63, 0x91, 0x90, 0xdf, 0xde, 0xcc, 0x6f, 0x50, 0xd8, 0x63, 0xe8, 0x66, 0xfa,
    0x85, 0x5a, 0xe9, 0x25, 0x85, 0xb0, 0x81, 0x5d, 0xea, 0xd9, 0x23, 0xe8, 0x64, 0xfa, 0x42, 0x15,
    0x26, 0xaa, 0x0d, 0x4c, 0xab, 0x66, 0x9f, 0x40, 0x67, 0x4e, 0x75, 0xa4, 0xfa, 0x0e, 0x8e, 0x0f,
    0x6a, 0x62, 0x55, 0x62, 0x6e, 0x29, 0xcc, 0x83, 0xee, 0x8f, 0x2b, 0x11, 0x47, 0x7a, 0xed, 0x75,
    0x29, 0x59, 0x25, 0xc4, 0x42, 0xce, 0x45, 0x10, 0x89, 0x78, 0x82, 0xbd, 0xd6, 0xa3, 0x5e, 0x6b,
    0x48, 0x30, 0xf9, 0x73, 0x11, 0xc8, 0xe9, 0xc4, 0xeb, 0x8f, 0x9c, 0xf1, 0x36, 0xb7, 0xc8, 0xff,
    0xb3, 0x05, 0x3d, 0xb4, 0x33, 0x4d, 0xe7, 0xea, 0xff, 0x3c, 0xff, 0xd7, 0x79, 0x6e, 0x57, 0x79,
    0xbe, 0x86, 0xee, 0xcb, 0xd9, 0x15, 0x65, 0xf9, 0x63, 0x70, 0xf3, 0xe0, 0xe5, 0xec, 0xea, 0x3d,
    0x49, 0x36, 0x4a, 0x9c, 0x29, 0xbd, 0xce, 0xca, 0x99, 0xd2, 0xeb, 0x0c, 0x67, 0x2a, 0xcb, 0xd5,
    0x8c, 0x12, 0xd8, 0xe2, 0x74, 0xc6, 0xd9, 0x51, 0xb3, 0xab, 0xe9, 0x84, 0xf2, 0xb4, 0xcd, 0x0d,
    0xf0, 0x7f, 0x82, 0x7d, 0x33, 0xb1, 0x18, 0xd9, 0x44, 0x6a, 0x19, 0x68, 0xf6, 0x11, 0xb4, 0x33,
    0x55, 0x58, 0x9b, 0xf7, 0xdf, 0x0d, 0xfe, 0x52, 0x15, 0x1c, 0xb5, 0xec, 0x09, 0x74, 0x72, 0x7a,
    0xd1, 0x56, 0xf5, 0x41, 0xcd, 0xab, 0xd7, 0x00, 0xb7, 0x1c, 0x34, 0x3e, 0x97, 0x42, 0x17, 0x76,
    0xb5, 0x19, 0xe0, 0x7f, 0x03, 0x3b, 0x97, 0x22, 0x17, 0x49, 0x39, 0xbc, 0x4f, 0xc1, 0xc5, 0x1c,
    0xa0, 0xe9, 0xf6, 0x78, 0x70, 0x7c, 0xd8, 0x0c, 0xf7, 0x5d, 0x1f, 0xb9, 0x21, 0xfa, 0x57, 0x4d,
    0xf7, 0x9f, 0xbd, 0xd1, 0xa7, 0x2a, 0xa9, 0x6d, 0x39, 0x0d, 0x5b, 0x98, 0x92, 0x40, 0x25, 0x26,
    0x4b, 0x3b, 0x9c, 0xce, 0xec, 0x89, 0x09, 0xd4, 0xb4, 0xd9, 0xbf, 0x59, 0x43, 0x9a, 0xff, 0x1c,
    0xf6, 0x2b, 0x6f, 0xcf, 0xa4, 0xd0, 0xab, 0x5c, 0xb2, 0x2f, 0xa0, 0x2b, 0xc9, 0x2a, 0x5e, 0xfc,
    0x5e, 0x9f, 0x8d, 0x63, 0xbc, 0xa4, 0xfa, 0x5f, 0xd9, 0xb8, 0x7f, 0x50, 0xb1, 0xc2, 0x02, 0x3e,
    0x02, 0x37, 0x4a, 0xe7, 0xaa, 0x8c, 0xbb, 0x91, 0x72, 0xdb, 0x08, 0xdc, 0xe8, 0xfd, 0x33, 0xe8,
    0x7c, 0xa7, 0xa8, 0x33, 0xcc, 0xe2, 0x77, 0x68, 0xcf, 0xe3, 0xe2, 0xc7, 0xcd, 0x18, 0x5e, 0x4f,
    0x43, 0x8a, 0xaf, 0xcf, 0x0d, 0xc0, 0x16, 0x2b, 0xd4, 0x85, 0x48, 0xcc, 0x28, 0xf5, 0xb9, 0x45,
    0xfe, 0x5f, 0xdb, 0xd0, 0xbd, 0x8c, 0x85, 0x96, 0xd3, 0x09, 0x36, 0x70, 0x1c, 0x05, 0x32, 0x2d,
    0xa4, 0xbd, 0xae, 0x84, 0x78, 0x67, 0xa0, 0x62, 0x95, 0x97, 0x77, 0x12, 0xc0, 0x3b, 0xd3, 0x53,
    0x12, 0x9b, 0x8d, 0x6d, 0x11, 0xb2, 0xd3, 0x57, 0xeb, 0x4c, 0xda, 0x95, 0x6d, 0x00, 0x1b, 0xc1,
    0x20, 0x3d, 0xad, 0x3f, 0x1b, 0x66, 0x6f, 0x37, 0x45, 0x68, 0x3f, 0x3d, 0xc9, 0xe9, 0x6b, 0xd8,
    0x31, 0x03, 0x64, 0x21, 0x0e, 0x50, 0x3a, 0x89, 0x72, 0x19, 0xe8, 0x48, 0xa5, 0x76, 0xba, 0x1a,
    0x12, 0x76, 0x04, 0x90, 0x07, 0xe7, 0x2a, 0x10, 0xa4, 0xef, 0x6d, 0x1c, 0x91, 0x06, 0xc3, 0x78,
    0x18, 0x25, 0x92, 0xe6, 0x8d, 0x3c, 0x8c, 0x12, 0x49, 0x56, 0x4e, 0x45, 0x6e, 0x5d, 0x00, 0x6b,
    0xa5, 0x92, 0xe0, 0x07, 0xf8, 0xe2, 0x54, 0xe4, 0x26, 0xe4, 0x01, 0xa9, 0x6b, 0x01, 0x3b, 0x84,
    0x1e, 0x72, 0xcf, 0xd5, 0x42, 0x79, 0x3b, 0xa4, 0xac, 0x70, 0xa9, 0xa3, 0xa4, 0xdc, 0xab, 0x75,
    0x94, 0x97, 0x43, 0xe8, 0x65, 0x58, 0x80, 0x93, 0x28, 0xf5, 0x76, 0xa9, 0x25, 0x2b, 0xcc, 0x1e,
    0xc2, 0x6e, 0x7a, 0x12, 0xa5, 0x54, 0xa0, 0xef, 0xe9, 0xef, 0x61, 0x8f, 0x18, 0x77, 0xa4, 0x6c,
    0x0c, 0x7b, 0x95, 0xe4, 0xb9, 0xf9, 0x9f, 0xd8, 0x27, 0xe2, 0x5d, 0x31, 0xfb, 0x12, 0x76, 0x31,
    0x0f, 0x0b, 0x55, 0x65, 0xeb, 0xfe, 0xc6, 0x6c, 0xdd, 0x61, 0x61, 0xec, 0xe8, 0xf1, 0x0b, 0x15,
    0xca, 0xd8, 0x63, 0x74, 0x77, 0x2d, 0x60, 0x4f, 0xe1, 0xa0, 0x02, 0x8d, 0x1a, 0x1f, 0x10, 0x6f,
    0x93, 0xca, 0xff, 0x1a, 0xee, 0xd9, 0xb6, 0xb3, 0xbf, 0x09, 0x8f, 0xab, 0x2d, 0xf2, 0x8f, 0xd6,
    0x2f, 0x89, 0x96, 0x70, 0xe2, 0xfd, 0x7a, 0x33, 0x74, 0xde, 0xde, 0x0c, 0x9d, 0xdf, 0x6f, 0x86,
    0xce, 0x2f, 0xb7, 0xc3, 0xad, 0xb7, 0xb7, 0xc3, 0xad, 0xdf, 0x6e, 0x87, 0x5b, 0xb3, 0x0e, 0xbd,
    0xf3, 0xf9, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x6b, 0x7d, 0x39, 0x98, 0x09, 0x00, 0x00,
    // 1122 bytes of a gzipped FileDescriptorProto
    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcd, 0x8e, 0x1b, 0x45,
    0x10, 0xce, 0xd8, 0xeb, 0xbf, 0xb2, 0xb3, 0xd9, 0x74, 0xa2, 0x68, 0xb4, 0x42, 0x96, 0x35, 0xa0,
    0xc4, 0x11, 0x61, 0x09, 0x0b, 0x02, 0x89, 0x13, 0xac, 0x9d, 0x28, 0x96, 0x92, 0xcd, 0xaa, 0x89,
    0x84, 0x38, 0xb6, 0x67, 0xda, 0xf6, 0x6c, 0x66, 0xa6, 0x87, 0x99, 0xb6, 0x12, 0x8b, 0x27, 0xe0,
    0xc6, 0x43, 0xf0, 0x30, 0x1c, 0x73, 0xe4, 0x88, 0xb2, 0xf0, 0x08, 0xdc, 0x51, 0x55, 0xf7, 0xfc,
    0xac, 0xd7, 0x09, 0x17, 0x8e, 0x9c, 0xdc, 0x5f, 0xd5, 0xe7, 0xa9, 0xbf, 0xaf, 0x6b, 0x06, 0x7a,
    0x79, 0xf0, 0xf2, 0x28, 0xcd, 0x94, 0x56, 0xac, 0x4b, 0x3f, 0x71, 0xbe, 0x3c, 0x84, 0xb9, 0xc8,
    0xa5, 0xb1, 0x7a, 0x3f, 0x3b, 0xd0, 0x9a, 0xc5, 0x62, 0x29, 0xd9, 0x6d, 0x68, 0xbd, 0x0a, 0x03,
    0xbd, 0x72, 0x9d, 0x91, 0x33, 0x6e, 0x71, 0x03, 0xd8, 0x1d, 0x68, 0xaf, 0x64, 0xb8, 0x5c, 0x69,
    0xb7, 0x41, 0x66, 0x8b, 0x18, 0x83, 0xbd, 0x40, 0x68, 0xe1, 0x36, 0x47, 0xce, 0x78, 0xc0, 0xe9,
    0xcc, 0x3e, 0x80, 0x9e, 0x0e, 0x63, 0x99, 0x6b, 0x11, 0xa7, 0xee, 0xde, 0xc8, 0x19, 0xf7, 0x78,
    0x65, 0x60, 0xfb, 0xd0, 0x08, 0x03, 0xb7, 0x35, 0x72, 0xc6, 0x4d, 0xde, 0x08, 0x03, 0x76, 0x00,
    0x4d, 0x3f, 0x0c, 0xdc, 0x36, 0xf1, 0xf0, 0xe8, 0x2d, 0xa1, 0xf7, 0x58, 0xf8, 0xf2, 0xdb, 0x64,
    0x19, 0x49, 0x74, 0x6f, 0xc4, 0x2b, 0x9b, 0x0c, 0x1e, 0x31, 0xc1, 0x34, 0xd4, 0xfe, 0xca, 0x66,
    0x62, 0x00, 0x26, 0x92, 0xa9, 0x28, 0xa2, 0x44, 0x5a, 0x9c, 0xce, 0x6c, 0x08, 0xe0, 0xab, 0x64,
    0x11, 0x06, 0x32, 0xf1, 0x25, 0x65, 0xd2, 0xe0, 0x35, 0x8b, 0xf7, 0x1a, 0xe0, 0xc5, 0x6a, 0xa1,
    0xb9, 0xcc, 0xd7, 0x91, 0xc6, 0x12, 0x97, 0x32, 0x09, 0x64, 0x66, 0x83, 0x59, 0x84, 0x19, 0x88,
    0xa5, 0xb4, 0xd1, 0xf0, 0x48, 0xb1, 0x84, 0x2f, 0xcb, 0x58, 0xc2, 0x97, 0xf8, 0xef, 0xb9, 0x14,
    0x6b, 0xbd, 0xa1, 0x38, 0x2d, 0x6e, 0x11, 0x66, 0x9b, 0xc7, 0x61, 0x24, 0xa9, 0xe2, 0x16, 0x37,
    0xc0, 0xfb, 0xb3, 0x01, 0x1d, 0xac, 0xf1, 0x4c, 0xe5, 0xec, 0x2e, 0xb4, 0x33, 0x1f, 0x01, 0xc5,
    0xed, 0x1f, 0xef, 0x1f, 0x15, 0x13, 0x3a, 0xe2, 0xd2, 0xd7, 0xdc, 0x7a, 0xd9, 0x27, 0xd0, 0x4b,
    0xf5, 0x53, 0xb9, 0xd0, 0x8f, 0x36, 0x26, 0x9b, 0xfe, 0xf1, 0x8d, 0x8a, 0x7a, 0xa6, 0xc2, 0x44,
    0xf3, 0x8a, 0xc1, 0x3e, 0x05, 0x48, 0x35, 0xc7, 0x21, 0x21, 0xbf, 0xb9, 0x9b, 0x5f, 0xa3, 0xb0,
    0xfb, 0xd0, 0x49, 0xf5, 0x33, 0xb5, 0xd6, 0x2b, 0x2a, 0x61, 0x07, 0xbb, 0xf0, 0xb3, 0x7b, 0xd0,
    0x4e, 0xf5, 0xa9, 0xca, 0x4d, 0x55, 0x3b, 0x98, 0xd6, 0xcd, 0x3e, 0x86, 0xf6, 0x82, 0xe6, 0x48,
    0xf3, 0xed, 0x1f, 0xdf, 0xaa, 0x88, 0xe5, 0x88, 0xb9, 0xa5, 0x30, 0x17, 0x3a, 0x3f, 0xae, 0x45,
    0x14, 0xea, 0x8d, 0xdb, 0xa1, 0x66, 0x15, 0x10, 0x07, 0xb9, 0x10, 0x7e, 0x28, 0xa2, 0x29, 0x6a,
    0xad, 0x4b, 0x5a, 0xab, 0x59, 0xb0, 0xf9, 0x0b, 0xe1, 0xcb, 0xd9, 0xd4, 0xed, 0x8d, 0x9c, 0xf1,
    0x1e, 0xb7, 0xc8, 0xfb, 0xab, 0x01, 0x5d, 0x8c, 0x33, 0x4b, 0x16, 0xea, 0xff, 0x3e, 0xff, 0xd7,
    0x7d, 0x6e, 0x96, 0x7d, 0x7e, 0x09, 0x9d, 0xe7, 0xf3, 0x73, 0xea, 0xf2, 0x47, 0xd0, 0xca, 0xfc,
    0xe7, 0xf3, 0xf3, 0x77, 0x34, 0xd9, 0x38, 0xf1, 0x4e, 0xe9, 0x4d, 0x5a, 0xdc, 0x29, 0xbd, 0x49,
    0xf1, 0x4e, 0xa5, 0x99, 0x9a, 0x53, 0x03, 0x1b, 0x9c, 0xce, 0x78, 0x77, 0xd4, 0xfc, 0x7c, 0x36,
    0xa5, 0x3e, 0xed, 0x71, 0x03, 0xbc, 0x9f, 0xe0, 0xc0, 0xdc, 0x58, 0xac, 0x6c, 0x2a, 0xb5, 0xf4,
    0x35, 0xfb, 0x10, 0x9a, 0xa9, 0xca, 0x6d, 0xcc, 0x9b, 0x97, 0x8b, 0x3f, 0x53, 0x39, 0x47, 0x2f,
    0x7b, 0x00, 0xed, 0x8c, 0xfe, 0x68, 0xa7, 0x7a, 0xbb, 0xe2, 0x55, 0x6b, 0x80, 0x5b, 0x0e, 0x06,
    0x5f, 0x48, 0xa1, 0x73, 0xbb, 0xda, 0x0c, 0xf0, 0xbe, 0x81, 0xc1, 0x99, 0xc8, 0x44, 0x5c, 0x5c,
    0xde, 0x87, 0xd0, 0xc2, 0x1e, 0x60, 0xe8, 0xe6, 0xb8, 0x7f, 0x7c, 0x58, 0x2f, 0xf7, 0x72, 0x8e,
    0xdc, 0x10, 0xbd, 0xf3, 0x7a, 0xfa, 0x8f, 0x5e, 0xeb, 0x89, 0x8a, 0xab, 0x58, 0x4e, 0x2d, 0x16,
    0xb6, 0xc4, 0x57, 0xb1, 0xe9, 0xd2, 0x80, 0xd3, 0x99, 0x3d, 0x30, 0x85, 0x1a, 0x99, 0xbd, 0x2f,
    0x1a, 0xd2, 0xbc, 0x27, 0x70, 0x50, 0x66, 0xfb, 0x58, 0x0a, 0xbd, 0xce, 0x24, 0xfb, 0x02, 0x3a,
    0x92, 0xa2, 0xe2, 0x83, 0xdf, 0x99, 0xb3, 0x49, 0x8c, 0x17, 0x54, 0xef, 0x2b, 0x5b, 0xf7, 0x0f,
    0x2a, 0x52, 0x38, 0xc0, 0x7b, 0xd0, 0x0a, 0x93, 0x85, 0x2a, 0xea, 0xae, 0xb5, 0xdc, 0x0a, 0x81,
    0x1b, 0xbf, 0xf7, 0x18, 0xda, 0xdf, 0x29, 0x52, 0x86, 0x59, 0xfc, 0x0e, 0xed, 0x79, 0x5c, 0xfc,
    0xb8, 0x19, 0x83, 0x97, 0xb3, 0x80, 0xea, 0xeb, 0x71, 0x03, 0x50, 0x62, 0xb9, 0x3a, 0x15, 0xb1,
    0xb9, 0x4a, 0x3d, 0x6e, 0x91, 0xf7, 0xf7, 0x1e, 0x74, 0xce, 0x22, 0xa1, 0xe5, 0x6c, 0x8a, 0x02,
    0x8e, 0x42, 0x5f, 0x26, 0xb9, 0xb4, 0x8f, 0x2b, 0x20, 0x3e, 0xd3, 0x57, 0x91, 0xca, 0x8a, 0x67,
    0x12, 0xc0, 0x67, 0x26, 0x13, 0x32, 0x9b, 0x8d, 0x6d, 0x11, 0xb2, 0x93, 0x17, 0x9b, 0x54, 0xda,
    0x95, 0x6d, 0x00, 0x1b, 0x41, 0x3f, 0x99, 0x54, 0xaf, 0x0d, 0xb3, 0xb7, 0xeb, 0x26, 0x8c, 0x9f,
    0x9c, 0x64, 0xf4, 0x36, 0x6c, 0x9b, 0x0b, 0x64, 0x21, 0x5e, 0xa0, 0x64, 0x1a, 0x66, 0xd2, 0xd7,
    0xa1, 0x4a, 0xec, 0xed, 0xaa, 0x59, 0xd8, 0x11, 0x40, 0xe6, 0x3f, 0x55, 0xbe, 0x20, 0x7f, 0x77,
    0xe7, 0x15, 0xa9, 0x31, 0x4c, 0x86, 0x61, 0x2c, 0xe9, 0xbe, 0x51, 0x86, 0x61, 0x2c, 0x29, 0xca,
    0x44, 0x64, 0x36, 0x05, 0xb0, 0x51, 0x4a, 0x0b, 0xbe, 0x80, 0x4f, 0x27, 0x22, 0x33, 0x25, 0xf7,
    0xc9, 0x5d, 0x19, 0xd8, 0x21, 0x74, 0x91, 0xfb, 0x54, 0x2d, 0x95, 0x3b, 0x20, 0x67, 0x89, 0x0b,
    0x1f, 0x35, 0xe5, 0x7a, 0xe5, 0xa3, 0xbe, 0x1c, 0x42, 0x37, 0xc5, 0x01, 0x9c, 0x84, 0x89, 0xbb,
    0x4f, 0x92, 0x2c, 0x31, 0xbb, 0x0b, 0xfb, 0xc9, 0x49, 0x98, 0xd0, 0x80, 0xbe, 0xa7, 0xaf, 0x87,
    0x1b, 0xc4, 0xd8, 0xb2, 0xb2, 0x31, 0xdc, 0x28, 0x2d, 0x4f, 0xcc, 0xf7, 0xc4, 0x01, 0x11, 0xb7,
    0xcd, 0xec, 0x4b, 0xd8, 0xc7, 0x3e, 0x2c, 0x55, 0xd9, 0xad, 0x9b, 0x3b, 0xbb, 0xb5, 0xc5, 0xc2,
    0xda, 0x31, 0xe3, 0x67, 0x2a, 0x90, 0x91, 0xcb, 0xe8, 0xd9, 0x95, 0x81, 0x3d, 0x84, 0x5b, 0x25,
    0xa8, 0xcd, 0xf8, 0x16, 0xf1, 0x76, 0xb9, 0xbc, 0xaf, 0xe1, 0xba, 0x95, 0x9d, 0xfd, 0x4c, 0xb8,
    0x5f, 0x6e, 0x91, 0x2b, 0xd2, 0x2f, 0x88, 0x96, 0xe0, 0xfd, 0xda, 0x84, 0x01, 0xd9, 0x26, 0x91,
    0x5a, 0x07, 0xef, 0x15, 0xee, 0x65, 0x61, 0x34, 0xfe, 0x55, 0x18, 0x5b, 0x22, 0x6d, 0x5e, 0x15,
    0xe9, 0x6e, 0x71, 0x5f, 0x16, 0x68, 0xeb, 0x8a, 0x40, 0x6d, 0xfb, 0x8c, 0x74, 0x8c, 0xb8, 0x2b,
    0x43, 0x21, 0x3c, 0x02, 0x9f, 0x95, 0xf2, 0x2e, 0x2d, 0x5b, 0xc2, 0xec, 0x5e, 0x11, 0xa6, 0x0b,
    0x9d, 0x45, 0x26, 0x62, 0x79, 0xaa, 0xac, 0xa0, 0x0b, 0x88, 0x71, 0x71, 0x3d, 0x1a, 0xed, 0x18,
    0x45, 0x57, 0x06, 0xfb, 0x5e, 0x2a, 0x14, 0x63, 0x14, 0x5d, 0xb3, 0x30, 0x0f, 0x06, 0xcb, 0x4c,
    0x6c, 0x68, 0xcd, 0x45, 0x62, 0x69, 0x65, 0x7d, 0xc9, 0x86, 0xb1, 0xfd, 0x95, 0xc8, 0x4e, 0xd7,
    0xb1, 0x55, 0x76, 0x01, 0xbd, 0x29, 0xb0, 0xfa, 0x94, 0xec, 0x9c, 0x8f, 0xb6, 0xe6, 0x7c, 0x67,
    0x6b, 0xce, 0x05, 0xdb, 0xb2, 0x4e, 0xdc, 0xdf, 0xde, 0x0e, 0x9d, 0x37, 0x6f, 0x87, 0xce, 0x1f,
    0x6f, 0x87, 0xce, 0x2f, 0x17, 0xc3, 0x6b, 0x6f, 0x2e, 0x86, 0xd7, 0x7e, 0xbf, 0x18, 0x5e, 0x9b,
    0xb7, 0xe9, 0x8f, 0x9f, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x46, 0x9d, 0xa9, 0xfd, 0x85, 0x0b,
    0x00, 0x00,
}
func (m *Image) Marshal() (dAtA []byte, err error) {
@@ -1910,6 +2106,125 @@
    return i, nil
}
func (m *PlateCloudID) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *PlateCloudID) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if len(m.License) > 0 {
        dAtA[i] = 0xa
        i++
        i = encodeVarintSdk(dAtA, i, uint64(len(m.License)))
        i += copy(dAtA[i:], m.License)
    }
    if m.RcLocation != nil {
        dAtA[i] = 0x12
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.RcLocation.Size()))
        n19, err19 := m.RcLocation.MarshalTo(dAtA[i:])
        if err19 != nil {
            return 0, err19
        }
        i += n19
    }
    if m.NConfidence != 0 {
        dAtA[i] = 0x18
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.NConfidence))
    }
    if m.NType != 0 {
        dAtA[i] = 0x20
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.NType))
    }
    if m.NDirection != 0 {
        dAtA[i] = 0x28
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.NDirection))
    }
    if m.NCarColor != 0 {
        dAtA[i] = 0x30
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.NCarColor))
    }
    if m.NCarColor1 != 0 {
        dAtA[i] = 0x38
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.NCarColor1))
    }
    if m.NCarBright != 0 {
        dAtA[i] = 0x40
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.NCarBright))
    }
    if m.FrameNo != 0 {
        dAtA[i] = 0x48
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.FrameNo))
    }
    if m.FaceWidth != 0 {
        dAtA[i] = 0x50
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.FaceWidth))
    }
    if m.FaceHeight != 0 {
        dAtA[i] = 0x58
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.FaceHeight))
    }
    if m.GrayFaceFlag != 0 {
        dAtA[i] = 0x60
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.GrayFaceFlag))
    }
    if m.CharNum != 0 {
        dAtA[i] = 0x68
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.CharNum))
    }
    return i, nil
}
func (m *PlateCloudIDResult) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *PlateCloudIDResult) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if len(m.Result) > 0 {
        for _, msg := range m.Result {
            dAtA[i] = 0xa
            i++
            i = encodeVarintSdk(dAtA, i, uint64(msg.Size()))
            n, err := msg.MarshalTo(dAtA[i:])
            if err != nil {
                return 0, err
            }
            i += n
        }
    }
    return i, nil
}
func encodeVarintSdk(dAtA []byte, offset int, v uint64) int {
    for v >= 1<<7 {
        dAtA[offset] = uint8(v&0x7f | 0x80)
@@ -2286,6 +2601,71 @@
}
func (m *PlateIDResult) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if len(m.Result) > 0 {
        for _, e := range m.Result {
            l = e.Size()
            n += 1 + l + sovSdk(uint64(l))
        }
    }
    return n
}
func (m *PlateCloudID) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    l = len(m.License)
    if l > 0 {
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.RcLocation != nil {
        l = m.RcLocation.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.NConfidence != 0 {
        n += 1 + sovSdk(uint64(m.NConfidence))
    }
    if m.NType != 0 {
        n += 1 + sovSdk(uint64(m.NType))
    }
    if m.NDirection != 0 {
        n += 1 + sovSdk(uint64(m.NDirection))
    }
    if m.NCarColor != 0 {
        n += 1 + sovSdk(uint64(m.NCarColor))
    }
    if m.NCarColor1 != 0 {
        n += 1 + sovSdk(uint64(m.NCarColor1))
    }
    if m.NCarBright != 0 {
        n += 1 + sovSdk(uint64(m.NCarBright))
    }
    if m.FrameNo != 0 {
        n += 1 + sovSdk(uint64(m.FrameNo))
    }
    if m.FaceWidth != 0 {
        n += 1 + sovSdk(uint64(m.FaceWidth))
    }
    if m.FaceHeight != 0 {
        n += 1 + sovSdk(uint64(m.FaceHeight))
    }
    if m.GrayFaceFlag != 0 {
        n += 1 + sovSdk(uint64(m.GrayFaceFlag))
    }
    if m.CharNum != 0 {
        n += 1 + sovSdk(uint64(m.CharNum))
    }
    return n
}
func (m *PlateCloudIDResult) Size() (n int) {
    if m == nil {
        return 0
    }
@@ -4972,6 +5352,423 @@
    }
    return nil
}
func (m *PlateCloudID) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: PlateCloudID: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: PlateCloudID: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field License", wireType)
            }
            var stringLen uint64
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                stringLen |= uint64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            intStringLen := int(stringLen)
            if intStringLen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + intStringLen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.License = string(dAtA[iNdEx:postIndex])
            iNdEx = postIndex
        case 2:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field RcLocation", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.RcLocation == nil {
                m.RcLocation = &Rect{}
            }
            if err := m.RcLocation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 3:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field NConfidence", wireType)
            }
            m.NConfidence = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.NConfidence |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 4:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field NType", wireType)
            }
            m.NType = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.NType |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 5:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field NDirection", wireType)
            }
            m.NDirection = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.NDirection |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 6:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field NCarColor", wireType)
            }
            m.NCarColor = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.NCarColor |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 7:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field NCarColor1", wireType)
            }
            m.NCarColor1 = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.NCarColor1 |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 8:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field NCarBright", wireType)
            }
            m.NCarBright = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.NCarBright |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 9:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field FrameNo", wireType)
            }
            m.FrameNo = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.FrameNo |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 10:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field FaceWidth", wireType)
            }
            m.FaceWidth = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.FaceWidth |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 11:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field FaceHeight", wireType)
            }
            m.FaceHeight = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.FaceHeight |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 12:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field GrayFaceFlag", wireType)
            }
            m.GrayFaceFlag = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.GrayFaceFlag |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 13:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field CharNum", wireType)
            }
            m.CharNum = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.CharNum |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *PlateCloudIDResult) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: PlateCloudIDResult: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: PlateCloudIDResult: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Result = append(m.Result, &PlateCloudID{})
            if err := m.Result[len(m.Result)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func skipSdk(dAtA []byte) (n int, err error) {
    l := len(dAtA)
    iNdEx := 0
sdk.proto
@@ -114,4 +114,32 @@
}
message PlateIDResult {
    repeated PlateID result = 1;
}
// cloud
message PlateCloudID{
    string license = 1;
    Rect rcLocation = 2;
    int32 nConfidence = 3;
    int32 nType = 4;
    int32 nDirection = 5;
    int32 nCarColor = 6;
    int32 nCarColor1 = 7;
    int32 nCarBright = 8;
    int32 frameNo = 9;
    int32 faceWidth = 10;
    int32 faceHeight = 11;
    int32 grayFaceFlag = 12;
    int32 charNum = 13;
    // bytes X = 14;
    // bytes Y = 15;
    // int32 pResultBits = 16;
    // bytes time = 17;
    // repeated Rect charLocation = 18;
    // repeated Rect charConfidence = 19;
}
message PlateCloudIDResult {
    repeated PlateCloudID result = 1;
}