---
panlei
2019-12-16 aa7c8d325fb831d32934e5ad20f95965475292ac
algorithm/personTrack/personTrack.go
@@ -1,6 +1,7 @@
package main
import (
   "encoding/base64"
   "encoding/json"
   "errors"
   uuid "github.com/satori/go.uuid"
@@ -20,7 +21,7 @@
var sender chan []byte = make(chan []byte)
var receiver chan string = make(chan string)
var initFlag bool = false
var sock mangos.Socket
func Init() {
   go Push()
@@ -28,10 +29,7 @@
// 人体跟踪算法
func Entrance(rule *protomsg.Rule, am *structure.AreaMap, lable *structure.Others, args *structure.SdkDatas, message *protomsg.SdkMessage) structure.LittleRuleResult {
   logger.Info("置位符号为:",initFlag)
   if !initFlag {
      Init()
   }
   if rule.PolygonId == am.AreaId { // 首先这条规则得是这个算法的规则,其次规则所对应的区域id要跟区域数据的id对的上
      //logger.Debug("---------走了人员异常算法", rule.Id, rule.SdkArgAlias, rule.Operator, rule.SdkArgValue, am.AreaId)
      if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" || rule.SdkArgAlias == "" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加
@@ -102,7 +100,7 @@
   trackArg["threshold"] = compareThreshold
   trackArg["cameraId"] = am.CameraId
   trackArg["bodyFeature"] = arg.BodyFeature
   trackArg["faceFeature"]   = arg.AttachArg.Feature
   trackArg["faceFeature"]   = base64.StdEncoding.EncodeToString(arg.AttachArg.Feature)
   logger.Info("请求张增飞比对数据参数:",trackArg)
   b,err := json.Marshal(trackArg)
   if err != nil {
@@ -152,15 +150,23 @@
   if errSize != nil {
      logger.Error("Failed set MaxRecvSize: %v", err)
   }
   errTimeOut := sock.SetOption(mangos.OptionRecvDeadline,time.Millisecond * 1500)
   if errTimeOut != nil {
      logger.Error("接收响应超时")
      return
   }
   errTimeOut1 := sock.SetOption(mangos.OptionSendDeadline,time.Millisecond * 1500)
   if errTimeOut1 != nil {
      logger.Error("发送超时")
      return
   }
   //sock.AddTransport(ipc.NewTransport())
   sock.AddTransport(tcp.NewTransport())
   serverIP, _ := GetLocalIP()
   if err = sock.Dial("tcp://"+serverIP+":4012"); err != nil {
      logger.Error("请求socket拨号失败: %s", err.Error())
   }
   //logger.Info("序列化数据")
   initFlag = true
   logger.Info("置位initFlag:",initFlag)
   for {
      select {
      case data := <- sender: