派生自 libgowrapper/face

zhangmeng
2020-01-15 7f36985b3ad287d2c5b99b157e1635352112cbb1
copy from bgr-2-analysis
1个文件已修改
42 ■■■■■ 已修改文件
run.go 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 {