派生自 libgowrapper/face

zhangmeng
2020-01-15 7f36985b3ad287d2c5b99b157e1635352112cbb1
run.go
@@ -4,10 +4,13 @@
   "context"
   "sync"
   "time"
   "unsafe"
   "face/common"
   "basic.com/pubsub/protomsg.git"
   "basic.com/valib/gogpu.git"
   "github.com/gogo/protobuf/proto"
)
type face struct {
@@ -254,9 +257,41 @@
         // conv to bgr24 and resize
         imgW, imgH := int(i.Width), int(i.Height)
         f.fnLogger("Face Start Run:", dtchn, "CAMERAID: ", rMsg.Msg.Cid)
         detect := f.handle.Track(i.Data, imgW, imgH, 3, dtchn)
         count, data, _ := f.handle.Run(i.Data, imgW, imgH, 3, dtchn)
         var faces []*protomsg.ResultFaceDetect
         //将sdk返回值转换成protomsg类型
         for _, d := range detect {
            //运行sd
            dec := FaceInfo2FacePos(d)
            prop := f.handle.Propertize(dec, i.Data, imgW, imgH, 3, dtchn)
            feat := f.handle.Extract(dec, i.Data, imgW, imgH, 3, dtchn)
            resP := (*protomsg.ThftResult)(unsafe.Pointer(&prop))
            result := tconvert2ProtoFacePos(d)
            //组成结果并序列化
            res := &protomsg.ResultFaceDetect{Pos: result, Result: resP, Feats: feat}
            faces = append(faces, res)
         }
         var err error
         var data []byte
         if len(faces) > 0 {
            // logo.Infoln("CID: ", rMsg.Msg.Cid, " TASK: ", rMsg.Msg.Tasklab.Taskid, " FACE TRACK OBJS: ", len(faces))
            facePos := protomsg.ParamFacePos{Faces: faces}
            data, err = proto.Marshal(&facePos)
            if err != nil {
               f.fnLogger("fdetect marshal proto face pos error", err)
               data = nil
            }
         }
         common.EjectResult(data, rMsg, out)
@@ -264,7 +299,8 @@
         if rMsg.Msg.Tasklab != nil {
            id, name = rMsg.Msg.Tasklab.Taskid, rMsg.Msg.Tasklab.Taskname
         }
         f.fnLogger("Chan:", dtchn, "CAMERAID: ", rMsg.Msg.Cid, " TASKID: ", id, " TASKNAME: ", name, " DETECT ", f.typ, " COUNT: ", count)
         f.fnLogger("Chan:", dtchn, "CAMERAID: ", rMsg.Msg.Cid, " TASKID: ", id, " TASKNAME: ", name, " DETECT ", f.typ, " COUNT: ", len(faces))
         sc++
         if sc == 25 {