| | |
| | | ) |
| | | |
| | | var sender chan []byte = make(chan []byte) |
| | | var receiver chan string = make(chan string) |
| | | var receiver chan map[string]interface{} = make(chan map[string]interface{}) |
| | | |
| | | var sock mangos.Socket |
| | | func Init() { |
| | |
| | | if err != nil { |
| | | logger.Error("json序列化错误", err) |
| | | } |
| | | dataId := getCompareMsg(b) |
| | | if esId == dataId { // 说明没比到相似的人 |
| | | logger.Info("没比到人") |
| | | result := getCompareMsg(b) |
| | | if esId == result["esId"].(string) || result["esId"].(string) == ""{ // 说明没比到相似的人,是新人 |
| | | logger.Info("没比到人,可以入库",am.CameraId) |
| | | arg.Uuid = esId |
| | | } else { |
| | | logger.Info("比对出来的dataId:",dataId) |
| | | base := structure.BaseInfo{TargetId:dataId} |
| | | arg.Liker = append(arg.Liker, &base) |
| | | if result["isHave"].(bool){ // 比到了相似的人且在此摄像机下已经出现过,最后不能插入数据库 |
| | | logger.Info("不许入库的数据",am.CameraId) |
| | | arg.Uuid = "" |
| | | } else { // 比到了相似的人但在此摄像机下未出现过,要插入数据库 |
| | | logger.Info("准备入库的数据",am.CameraId) |
| | | base := structure.BaseInfo{TargetId:result["esId"].(string)} |
| | | arg.Liker = append(arg.Liker, &base) |
| | | } |
| | | } |
| | | } |
| | | |
| | | func track (rule *protomsg.Rule,am *structure.AreaMap) structure.LittleRuleResult{ |
| | | defer func() { |
| | | if err := recover();err != nil { |
| | | logger.Error("追踪判断失败",err) |
| | | } |
| | | }() |
| | | var threshold float32 = 60 // 默认阈值为70 |
| | | if th,err := strconv.ParseFloat(rule.SdkArgValue,32); err == nil { |
| | | threshold = float32(th) |
| | | } |
| | | for _, arg := range am.FilterData { |
| | | fillLiker(threshold,arg,am) |
| | | logger.Info("比完之后的数据追踪数据是:",arg) |
| | | //logger.Info("比完之后的数据追踪数据是:",arg) |
| | | //if len(arg.Liker) == 0 { |
| | | // // 如果没有相似者则删除本目标数据 |
| | | // am.FilterData = append(am.FilterData[:i],am.FilterData[i+1:]...) |
| | |
| | | for { |
| | | select { |
| | | case data := <- sender: |
| | | trackMap := make(map[string]interface{}) |
| | | _ = json.Unmarshal(data, &trackMap) |
| | | logger.Info("请求张增飞比对数据参数:",trackMap) |
| | | //trackMap := make(map[string]interface{}) |
| | | //_ = json.Unmarshal(data, &trackMap) |
| | | //logger.Info("请求张增飞比对数据参数:",trackMap) |
| | | if err = sock.Send(data); err != nil { |
| | | logger.Error("推送socket发送数据失败: %s", err.Error()) |
| | | } |
| | |
| | | logger.Error("接收响应失败: %s", err.Error()) |
| | | } |
| | | logger.Debug("数据推送成功!收到响应,数据长度为:",len(msg)) |
| | | receiver <- string(msg) |
| | | recive := make(map[string]interface{}) |
| | | _ = json.Unmarshal(msg,&recive) |
| | | receiver <- recive |
| | | default: |
| | | time.Sleep(time.Millisecond * 10) |
| | | } |
| | | } |
| | | } |
| | | |
| | | func getCompareMsg(data []byte) string{ |
| | | func getCompareMsg(data []byte) map[string]interface{}{ |
| | | sender <- data |
| | | return <- receiver |
| | | } |