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
|
}
|