package sdk import ( "analysis/logo" "analysis/work" "basic.com/pubsub/protomsg.git" "basic.com/valib/gosdk.git" "github.com/gogo/protobuf/proto" ) func vehicle(img *gosdk.SDKImage, rc *gosdk.CRECT, mW, mH int, rMsg *work.MsgRS, out chan<- work.MsgRS) { result := gosdk.VehicleITSDetect(*img, rc) count := len(result) var id, name string if rMsg.Msg.Tasklab != nil { id, name = rMsg.Msg.Tasklab.Taskid, rMsg.Msg.Tasklab.Taskname } logo.Infoln("CAMERAID: ", rMsg.Msg.Cid, " TASKID: ", id, " TASKNAME: ", name, " DETECT VEHICLE PLATE ID COUNT: ", count) if count <= 0 { ejectResult(nil, *rMsg, out) return } plateids := convert2ProtoPlateIDResultVehicle(result) plateresult := protomsg.PlateIDResult{Result: plateids} data, err := proto.Marshal(&plateresult) if err != nil { logo.Errorln("PLATE ID DETECTOR MARSHAL PROTO PLATE IDS ERROR", err) data = nil } ejectResult(data, *rMsg, out) } func convert2ProtoPlateIDResultVehicle(obj []gosdk.CVehicleITSResult) []*protomsg.PlateIDVehicle { ret := []*protomsg.PlateIDVehicle{} for _, v := range obj { rcPlateID := &protomsg.Rect{ Left: v.RcLocation.Left, Right: v.RcLocation.Right, Top: v.RcLocation.Top, Bottom: v.RcLocation.Bottom, } rcCar := &protomsg.Rect{ Left: v.RcCarLocation.Left, Right: v.RcCarLocation.Right, Top: v.RcCarLocation.Top, Bottom: v.RcCarLocation.Bottom, } lic := string(v.License[:]) end := len(lic) for i := len(lic) - 1; i >= 0; i-- { if lic[i] != '\000' { end = i + 1 break } } if end > 0 { lic = lic[:end] } obj := &protomsg.PlateIDVehicle{ NPlateFlag: v.NPlateFlag, NColor: v.NColor, NType: v.NType, License: lic, NConfidence: v.NConfidence, NCharNum: v.NCharNum, NCharConfidence: v.NCharConfidence[:], RcLocation: rcPlateID, RcCarLocation: rcCar, VehicleType: string(v.VehicleType[:]), VehicleBrand: string(v.VehicleBrand[:]), VehicleSub: string(v.VehicleSub[:]), VehicleType1: string(v.VehicleType1[:]), FvdConf: v.FVDConf, FConfdence: v.FConfdence, NVehicleSubModel: v.NVehicleSubModel, NVehicleBright: v.NVehicleBright, NVehicleColor1: v.NVehicleColor1, NVehicleColor2: v.NVehicleColor2, } ret = append(ret, obj) } return ret }