config/conf.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
go.mod | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
go.sum | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
insertdata/insertDataToEs.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruleserver/readyDataForRule.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
config/conf.yml
@@ -1,3 +1,6 @@ photoUrl: "http://192.168.1.203:6333/submit" videopersons: "http://192.168.1.182:9200/videopersons/perVideoPicture" personaction: "http://192.168.1.182:9200/personaction/perVideoAction" personaction: "http://192.168.1.182:9200/personaction/perVideoAction" serverip: "192.168.1.182" serverport: "9200" dbtablepersons: "dbtablepersons" go.mod
@@ -4,7 +4,7 @@ require ( basic.com/dbapi.git v0.0.0-20190701055817-73bca225181f basic.com/pubsub/cache.git v0.0.0-20190712095028-e73efb4afc3b basic.com/pubsub/cache.git v0.0.0-20190718024458-be52360c4814 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 go.sum
@@ -2,6 +2,8 @@ basic.com/dbapi.git v0.0.0-20190701055817-73bca225181f/go.mod h1:eDXPnxaz6jZPDvBSk7ya7oSASWPCuUEgRTJCjsfKt/Q= basic.com/pubsub/cache.git v0.0.0-20190712095028-e73efb4afc3b h1:UAasACFqEYUBCuZkkdxYVc1QmSyB7McvNHS36QxDJp4= basic.com/pubsub/cache.git v0.0.0-20190712095028-e73efb4afc3b/go.mod h1:gHLJZz2ee1cGL0X0ae69fs56bAxkDgEQwDhhXZJNUcY= basic.com/pubsub/cache.git v0.0.0-20190718024458-be52360c4814 h1:KoSik/aiJNDt3d+qRKExLW4pNHZ7vU1wXHhWXxZi4qo= basic.com/pubsub/cache.git v0.0.0-20190718024458-be52360c4814/go.mod h1:gHLJZz2ee1cGL0X0ae69fs56bAxkDgEQwDhhXZJNUcY= basic.com/pubsub/protomsg.git v0.0.0-20190709070734-b34c868adcc2 h1:ygh9CQPS48KmXv+PNUrOcrMqIiDZOs11apnQdu9oGEY= 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= insertdata/insertDataToEs.go
@@ -19,12 +19,15 @@ "ruleprocess/util" ) var weedfsUrl,videoPersonUrl,personAction string var weedfsUrl, videoPersonUrl, personAction string type conf struct { PhotoUrl string `yaml:"photoUrl"` Videopersons string `yaml:"videopersons"` Personaction string `yaml:"personaction"` PhotoUrl string `yaml:"photoUrl"` Videopersons string `yaml:"videopersons"` Personaction string `yaml:"personaction"` Serverip string `yaml:"serverIp"` Serverport string `yaml:"serverPort"` Dbtablepersons string `yaml:"dbTablePersons"` } func init() { @@ -43,35 +46,35 @@ // 人脸的数据结构 type PerVideoPicture struct { Id string `json:"id"` CameraId string `json:"cameraId"` CameraAddr string `json:"cameraAddr"` PicDate string `json:"picDate"` PicMaxUrl string `json:"picMaxUrl"` TaskId string `json:"taskId"` TaskName string `json:"taskName"` SdkName string `json:"sdkName"` Content string `json:"content"` LikeDate string `json:"likeDate"` Sex string `json:"sex"` Age int32 `json:"age"` AgeDescription string `json:"ageDescription"` Race string `json:"race"` SmileLevel int32 `json:"smileLevel"` BeautyLevel int32 `json:"beautyLevel"` FaceFeature string `json:"faceFeature"` PicSmUrl []string `json:"picSmUrl"` VideoUrl string `json:"videoUrl"` AnalyServerId string `json:"analyServerId"` AnalyServerName string `json:"analyServerName"` AnalyServerIp string `json:"analyServerIp"` ClusterId string `json:"clusterId"` DetectScore float64 `json:"detectScore"` IsAlarm int `json:"isAlarm"` IsAckAlarm int `json:"isAckAlarm"` IsCollect int `json:"isCollect"` IsDelete int `json:"isDelete"` BaseInfo []*ruleserver.BaseInfo`json:"baseInfo"` Id string `json:"id"` CameraId string `json:"cameraId"` CameraAddr string `json:"cameraAddr"` PicDate string `json:"picDate"` PicMaxUrl string `json:"picMaxUrl"` TaskId string `json:"taskId"` TaskName string `json:"taskName"` SdkName string `json:"sdkName"` Content string `json:"content"` LikeDate string `json:"likeDate"` Sex string `json:"sex"` Age int32 `json:"age"` AgeDescription string `json:"ageDescription"` Race string `json:"race"` SmileLevel int32 `json:"smileLevel"` BeautyLevel int32 `json:"beautyLevel"` FaceFeature string `json:"faceFeature"` PicSmUrl []string `json:"picSmUrl"` VideoUrl string `json:"videoUrl"` AnalyServerId string `json:"analyServerId"` AnalyServerName string `json:"analyServerName"` AnalyServerIp string `json:"analyServerIp"` ClusterId string `json:"clusterId"` DetectScore float64 `json:"detectScore"` IsAlarm int `json:"isAlarm"` IsAckAlarm int `json:"isAckAlarm"` IsCollect int `json:"isCollect"` IsDelete int `json:"isDelete"` BaseInfo []*ruleserver.BaseInfo `json:"baseInfo"` } // yolo行为的数据结构 @@ -307,7 +310,7 @@ if len(alarmRules) > 0 { isAlarm = 1 //resp, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String()) resp, err = util.DrawPolygonOnImage(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result),weedfsUrl) resp, err = util.DrawPolygonOnImage(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl) if err != nil { logger.Error("画框或上传图片服务器出错", err) } else { @@ -382,7 +385,7 @@ i := protomsg.Image{} err = proto.Unmarshal(bdata, &i) //resp, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String()) resp, err := util.DrawPolygonOnImage(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result),weedfsUrl) resp, err := util.DrawPolygonOnImage(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl) if err != nil { logger.Error("画框或上传图片服务器出错", err) } else { ruleserver/readyDataForRule.go
@@ -4,16 +4,42 @@ "basic.com/pubsub/cache.git/esutil" bigCache "basic.com/pubsub/cache.git" "basic.com/pubsub/protomsg.git" "basic.com/pubsub/sdkcompare.git" "encoding/json" "fmt" "github.com/go-yaml/yaml" "io/ioutil" "ruleprocess/cache" "ruleprocess/logger" "strconv" "strings" "time" ) var serverIp,serverPort,dbTablePersons string type conf struct { PhotoUrl string `yaml:"photoUrl"` Videopersons string `yaml:"videopersons"` Personaction string `yaml:"personaction"` Serverip string `yaml:"serverIp"` Serverport string `yaml:"serverPort"` Dbtablepersons string `yaml:"dbTablePersons"` } func init() { bigCache.Init() data, err := ioutil.ReadFile("./config/conf.yml") if err != nil { fmt.Println("读取配置文件出错--", err) logger.Error("读取配置文件出错--", err) } c := conf{} //把yaml形式的字符串解析成struct类型 yaml.Unmarshal(data, &c) serverIp = c.Serverip serverPort = c.Serverport dbTablePersons = c.Dbtablepersons localConfig, err := cache.GetServerInfo() if err != nil { logger.Error("查询本机信息失败!") } logger.Debug("本机信息:",localConfig) bigCache.Init(dbTablePersons,serverIp,serverPort,localConfig.ServerId) } type BaseInfo struct { @@ -118,8 +144,8 @@ } // 给目标填充liker func (arg *Arg) fillLiker() { bytes := sdkcompare.GetComparePersonBaseInfo(nil, arg.Feature, 40) func (arg *Arg) fillLiker(tableId []string,compareThreshold float32) { bytes := bigCache.GetComparePersonBaseInfo(tableId,arg.Feature,compareThreshold) var m map[string]float32 err1 := json.Unmarshal(bytes, &m) if err1 != nil { @@ -133,32 +159,46 @@ logger.Info("------------------------------------------------------------------------------------------------------------------------") logger.Info("=====================人员id的集合为:",ids) if len(ids) > 0 { baseinfos, err1 := esutil.Dbpersoninfosbyid(ids) baseinfos, err1 := esutil.Dbpersoninfosbyid(ids,dbTablePersons,serverIp,serverPort) if err1 != nil { logger.Error("查询底库人员信息出错", err1) } logger.Debug("----------------++++++++++++++++++++底库人员信息:",baseinfos) for _,baseinfo := range baseinfos { logger.Info("---------看看每个底库人员的信息:",baseinfo) // 根据tableId查询底库信息给liker赋值 logger.Info("---------看看每个底库人员的信息:",baseinfo.Id,baseinfo.PersonName) var tableIds []string tableIds = append(tableIds,baseinfo.TableId) // 虽然是传入数组返回数组的接口,但我按单个的使用了 table,err := esutil.Dbtablefosbyid(tableIds,dbTablePersons,serverIp,serverPort) if err != nil { logger.Error("根据id查询底库信息出错!") } base := BaseInfo{TableId:baseinfo.TableId,TableName:table[0].TableName,BwType:table[0].BwType,CompareScore:float64(m[baseinfo.Id]),PersonId:baseinfo.Id,PersonName:baseinfo.PersonName,PersonPicUrl:baseinfo.PersonPicUrl,PhoneNum:baseinfo.PhoneNum,Sex:baseinfo.Sex,MonitorLevel:baseinfo.MonitorLevel,Content:""} arg.Liker = append(arg.Liker, &base) } } //baseinfo.CompareScore = Retain(val) //arg.Liker = append(arg.Liker, &baseinfo) //logger.Info("------------------第一次看args:",*arg) } // 人脸比对 func Compare(args *SdkDatas, groupRule *protomsg.GroupRule) { compareFlag := 0 tableIds := "" var tableIds []string var threshold float32 // 看看是否有只配人脸比对算法但没有配对比库的规则,如果有,则比对对象为全部底库 for j := 0; j < len(groupRule.Rules); j++ { if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { // 配了人脸比对 if groupRule.Rules[j].SdkArgAlias == "compareBase" && groupRule.Rules[j].SdkArgValue != "" { // 配了比对底库的参数但没有配全部底库 compareFlag = 2 tableIds = groupRule.Rules[j].SdkArgValue + "," // 最后会多一个tableId,切出来的数组取len-1就可以 tableIds = append(tableIds,groupRule.Rules[j].SdkArgValue)// 最后会多一个tableId,切出来的数组取len-1就可以 } if groupRule.Rules[j].SdkArgAlias == "compareBase" && groupRule.Rules[j].SdkArgValue == "" { // 配的参数是比对全部底库 compareFlag = 1 } if groupRule.Rules[j].SdkArgAlias == "threshold" { v2, err := strconv.ParseFloat(groupRule.Rules[j].SdkArgValue, 32) if err != nil { logger.Error("string转float32失败!") } threshold = float32(v2) } } } @@ -180,14 +220,10 @@ logger.Info("--------------看看compareFlag的值:",compareFlag) for _, arg := range areaMap.args { if compareFlag == 1 { arg.fillLiker() arg.fillLiker(nil,threshold) } if compareFlag == 2 { array := strings.Split(tableIds, ",") logger.Info("--------------------------看看对比底库的值;",array) for i := 0; i < len(array)-1; i++ { arg.fillLiker() } arg.fillLiker(tableIds,threshold) } logger.Info("-------------------成功给liker赋值,长度为:", len(arg.Liker)) }