go.mod | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
go.sum | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
main.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruleserver/personTrack.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruleserver/readyDataForRule.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
go.mod
@@ -5,7 +5,7 @@ require ( basic.com/dbapi.git v0.0.0-20190701055817-73bca225181f basic.com/pubsub/cache.git v0.0.0-20190712095028-e73efb4afc3b basic.com/pubsub/protomsg.git v0.0.0-20190712081201-5a482419c227 basic.com/pubsub/protomsg.git v0.0.0-20190717072554-576620e5ba07 basic.com/pubsub/sdkcompare.git v0.0.0-20190715013640-f536a4647d00 basic.com/valib/deliver.git v0.0.0-20190531095353-25d8c3b20051 basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28 go.sum
@@ -6,6 +6,8 @@ basic.com/pubsub/protomsg.git v0.0.0-20190709070734-b34c868adcc2/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU= basic.com/pubsub/protomsg.git v0.0.0-20190712081201-5a482419c227 h1:1jprxyxmeQ8X4/S7cFnhRf4ByVqD0xLZNvx8/0xTk2k= basic.com/pubsub/protomsg.git v0.0.0-20190712081201-5a482419c227/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU= basic.com/pubsub/protomsg.git v0.0.0-20190717072554-576620e5ba07 h1:ZeiaQTNSB6K5ASpcwYtk0bWabMQX0r2JX/5agzTznRs= basic.com/pubsub/protomsg.git v0.0.0-20190717072554-576620e5ba07/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU= basic.com/pubsub/sdkcompare.git v0.0.0-20190715013640-f536a4647d00 h1:sK+Tx7rvM9J2WnNIwrzMDjZSylWiKNfQO0prUBfKsDk= basic.com/pubsub/sdkcompare.git v0.0.0-20190715013640-f536a4647d00/go.mod h1:8by33F9E1w17Pw/rDgJGJXAo122w0wDENG14hiMS+RE= basic.com/valib/deliver.git v0.0.0-20190531095353-25d8c3b20051 h1:9flC2o3kasaM2Y6I+mY+mxmve/pyAY/UzGQZLT3lFHM= main.go
@@ -105,6 +105,8 @@ if err != nil { panic("解析msg时出现错误") } // 先进行一下追踪 ruleserver.IsSame(&m) args.CameraId = m.Cid args.TaskId = m.Tasklab.Taskid // 把图片的二进制解压缩进行画框在压缩回去 @@ -140,7 +142,7 @@ logger.Info("解析YOLO sdk数据时出现错误", err) continue } //logger.Info("--------------看看yolo中有几个目标:",len(yoloParam.Infos)) logger.Info("--------------追踪之后yolo的个数:",len(yoloParam.Infos)) for _, info := range yoloParam.Infos { if info.Typ == 0 { //logger.Debug("-------------yolo的坐标有几个",info.RcObj) @@ -177,9 +179,9 @@ logger.Info("解析FACE sdk数据时出现错误", err) continue } logger.Info("--------------看看人脸检测中有几个目标:",len(faceParam.Faces)) logger.Info("--------------追踪之后yolo的个数:",len(faceParam.Faces)) for _, info := range faceParam.Faces { logger.Info("_______________________________________________第一次看相似值:",info.Pos.FAngle.Confidence*100) //logger.Info("_______________________________________________第一次看相似值:",info.Pos.FAngle.Confidence*100) photoMap := ruleserver.PhotoMap{Rects: rectFormat(info.Pos.RcFace), Score: float64(info.Pos.FAngle.Confidence*100), IsYolo:false,ThftRes:*(info.Result),Feature:info.Feats} arg.Photo = append(arg.Photo, photoMap) } ruleserver/personTrack.go
New file @@ -0,0 +1,94 @@ package ruleserver import ( "basic.com/pubsub/protomsg.git" "github.com/golang/protobuf/proto" "ruleprocess/logger" ) var TrackPond = make(map[string]*PersonTrack) type PersonTrack struct { Face int // 人脸的id数组 改为数量 Yolo int // yolo对象的id数组 改为数量 } func (pt *PersonTrack) Set(msg protomsg.SdkMessage) { } // 检查是否前后两次的数据id是否完全相同(人脸和yolo) func IsSame(msg *protomsg.SdkMessage) { logger.Debug("++++++++++++++++++++++++++++追踪开始++++++++++++++++++++++++") for _, sdkinfo := range msg.Tasklab.Sdkinfos { // 遍历各算法的sdkData if sdkinfo.Sdktype == "FaceDetect" { // 人脸检测 if len(sdkinfo.Sdkdata) > 1 { faceParam := protomsg.ParamFacePos{} err := proto.Unmarshal(sdkinfo.Sdkdata, &faceParam) if err != nil { logger.Info("解析face sdk数据时出现错误", err) continue } logger.Info("================追踪之前人脸的个数:",len(faceParam.Faces)) if len(faceParam.Faces) == TrackPond[msg.Cid].Yolo { // yolo的如果数量相同则视为不变、把yolo的sdkData清空 faceParam.Faces = (faceParam.Faces)[0:0] } else { TrackPond[msg.Cid].Face = len(faceParam.Faces) } //for i := 0; i < len(faceParam.Faces); { // if flag := IsInPond(msg.Cid,faceParam.Faces[i]);flag { // 已经存在,从msg的人脸数组中删除这个元素,不必传到下一个环节 // faceParam.Faces = append(faceParam.Faces[:i], faceParam.Faces[i+1:]...) // } else { // i++ // } //} } else { continue } } if sdkinfo.Sdktype == "Yolo" { if len(sdkinfo.Sdkdata) > 1 { yoloParam := protomsg.ParamYoloObj{} err := proto.Unmarshal(sdkinfo.Sdkdata, &yoloParam) if err != nil { logger.Info("解析yolo数据时出现错误", err) continue } logger.Info("================追踪之前yolo的个数:",len(yoloParam.Infos)) if len(yoloParam.Infos) == TrackPond[msg.Cid].Yolo { // yolo的如果数量相同则视为不变、把yolo的sdkData清空 yoloParam.Infos = (yoloParam.Infos)[0:0] } else { TrackPond[msg.Cid].Yolo = len(yoloParam.Infos) } } else { continue } } } logger.Debug("---------------------------------------追踪结束--------------------------------------") } //// 判断一个人脸id在不在追踪池中 //func FaceIsInPond(cameraId string,face *protomsg.ResultFaceDetect) bool{ // if TrackPond[cameraId].Face > 0 { // for key,val := range TrackPond { // if key == cameraId { // faceFlag := false // for faceId := range val.Face { // if face.Pos.FaceID == uint64(faceId) { // 此人脸已在池子中,不需要它到下一个环节了 // faceFlag = true // return true // } // } // if !faceFlag { // 此人脸不在池子中 // val.Face = append(val.Face,face.Pos.FaceID) // return false // } // }else { // return false // } // } // } else { // return false // } // return false //} ruleserver/readyDataForRule.go
@@ -132,13 +132,15 @@ } logger.Info("------------------------------------------------------------------------------------------------------------------------") logger.Info("=====================人员id的集合为:",ids) baseinfos, err1 := esutil.Dbpersoninfosbyid(ids) if err1 != nil { logger.Error("查询底库人员信息出错", err1) } logger.Debug("----------------++++++++++++++++++++底库人员信息:",baseinfos) for _,baseinfo := range baseinfos { logger.Info("---------看看每个底库人员的信息:",baseinfo) if len(ids) > 0 { baseinfos, err1 := esutil.Dbpersoninfosbyid(ids) if err1 != nil { logger.Error("查询底库人员信息出错", err1) } logger.Debug("----------------++++++++++++++++++++底库人员信息:",baseinfos) for _,baseinfo := range baseinfos { logger.Info("---------看看每个底库人员的信息:",baseinfo) } } //baseinfo.CompareScore = Retain(val) //arg.Liker = append(arg.Liker, &baseinfo)