From c8215ae1ce2825dca6a003c27fc721e86ae85e38 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期二, 17 十二月 2019 10:01:15 +0800 Subject: [PATCH] update --- work/sdk/humantrack.go | 104 +++++++++++++++++++++------------------------------ 1 files changed, 43 insertions(+), 61 deletions(-) diff --git a/work/sdk/humantrack.go b/work/sdk/humantrack.go index 8c5c3fd..4ec45dd 100644 --- a/work/sdk/humantrack.go +++ b/work/sdk/humantrack.go @@ -5,7 +5,6 @@ "analysis/work" "context" "plugin" - "time" "github.com/gogo/protobuf/proto" @@ -19,6 +18,8 @@ gpu int batchSize int flag int + + list *LockList handle interface{} fnInit func(int, int, int, func(...interface{})) interface{} @@ -83,69 +84,50 @@ return true } +func (t *HumanTracker) track(rMsg work.MsgRS, out chan<- work.MsgRS, typ string) { + i := unpackImage(rMsg, typ) + if i == nil || i.Data == nil || i.Width <= 0 || i.Height <= 0 { + ejectResult(nil, rMsg, out) + return + } + + imgW, imgH := int(i.Width), int(i.Height) + + // var images []sdkstruct.SDKImage + // img := sdkstruct.SDKImage{ + // Data: i.Data, + // Width: imgW, + // Height: imgH, + // Channel: 3, + // } + // images = append(images, img) + res := t.fnRun(t.handle, i.Data, imgW, imgH, 3) + if res != nil { + ejectResult(nil, rMsg, out) + return + } + + hr := convert2ProtoHumanTrackResult(res) + result := protomsg.HumanTrackResult{Result: hr[0]} + data, err := proto.Marshal(&result) + if err != nil { + logo.Errorln("HUMAN TRACKER MARSHAL PROTO PLATE IDS ERROR", err) + data = nil + } + ejectResult(data, rMsg, out) + 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 YOLO COUNT: ", len(hr[0])) + +} + // Run impl func (t *HumanTracker) Run(ctx context.Context, in <-chan work.MsgRS, out chan<- work.MsgRS, typ string) { - tm := time.Now() - sc := 0 - for { - select { - case <-ctx.Done(): - return - default: - rMsg := <-in - if !validRemoteMessage(rMsg, typ) { - ejectResult(nil, rMsg, out) - continue - } - - i := unpackImage(rMsg, typ) - if i == nil || i.Data == nil || i.Width <= 0 || i.Height <= 0 { - ejectResult(nil, rMsg, out) - continue - } - - imgW, imgH := int(i.Width), int(i.Height) - - // var images []sdkstruct.SDKImage - // img := sdkstruct.SDKImage{ - // Data: i.Data, - // Width: imgW, - // Height: imgH, - // Channel: 3, - // } - // images = append(images, img) - res := t.fnRun(t.handle, i.Data, imgW, imgH, 3) - if res != nil { - ejectResult(nil, rMsg, out) - continue - } - - hr := convert2ProtoHumanTrackResult(res) - result := protomsg.HumanTrackResult{Result: hr[0]} - data, err := proto.Marshal(&result) - if err != nil { - logo.Errorln("HUMAN TRACKER MARSHAL PROTO PLATE IDS ERROR", err) - data = nil - } - ejectResult(data, rMsg, out) - - ///////////////////////////////////// - sc++ - if sc == 25 { - logo.Infoln("HUMAN TRACKER RUN 25 FRAME USE TIME: ", time.Since(tm)) - sc = 0 - tm = time.Now() - } - - if time.Since(tm) > time.Second { - logo.Infof("HUMAN TRACKER RUN %d FRAME USE TIME: %v", sc, time.Since(tm)) - sc = 0 - tm = time.Now() - } - - } - } + FlowSimple(ctx, in, out, typ, t.list.Push, t.list.Pop, t.track, func() { t.fnFree(t.handle) }) } // message HumanTrack { -- Gitblit v1.8.0