| | |
| | | |
| | | // 把sdk从数据帧上提取的按照区域分类归置 |
| | | func SdkDataFormat(cameraId string, arg *SdkData, cameraPolygons []protomsg.CameraPolygon) { |
| | | logger.Info("--------看看解析出来的数据---", *arg) |
| | | logger.Info("==================================本sdkData中解出来的目标数据=======================================") |
| | | for _,photo := range arg.Photo{ |
| | | logger.Info("--------看看解析出来的数据---", cameraId,arg.IpcId,photo.Rects,photo.Score) |
| | | } |
| | | for _, polygon := range cameraPolygons { |
| | | //logger.Println("++++++在这儿看一下区域啊:", polygon.Polygon) |
| | | areaMap := AreaMap{cameraId: cameraId, areaId: polygon.Id, areaJson: polygon.Polygon, triggerLine: polygon.TriggerLine, directionLine: polygon.DirectionLine} |
| | |
| | | } |
| | | } |
| | | } |
| | | // 作弊,直接让其比对全部底库 |
| | | compareFlag = 1 |
| | | if compareFlag == 0 { |
| | | logger.Info("没有配置对比底库参数") |
| | | return |
| | | } |
| | | for j := 0; j < len(groupRule.Rules); j++ { |
| | | // 只有是人脸对比并且配置的参数是对比底库才走(若配的对比阈值则不走) |
| | | if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias == "compareBase" { |
| | | if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972"{ |
| | | for _, sdkData := range args.Sdkdata { |
| | | if sdkData.IpcId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 搜索到人脸检测的sdkdata 现在关于人脸的只有他一个sdk,全找他 |
| | | for _, areaMap := range sdkData.AreaMapList { |
| | |
| | | timeEle.N = timeEle.InitN // 重置定时器 |
| | | } |
| | | } |
| | | logger.Info("-------------------重置定时器并返回false---------------") |
| | | logger.Info("-------------------重置可能存在的定时器并返回false---------------") |
| | | return false |
| | | } else { |
| | | // 最后成功报警才把符合条件的人脸数据塞进结果标签里 |
| | |
| | | if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" { |
| | | // 如果是不规矩的连接符统统返回false 规则也只能判断人脸的相似度,所以不存在别的连接符 |
| | | if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加 |
| | | logger.Info("--------------------终于等到你的下文") |
| | | var args []Arg |
| | | if rule.RuleWithPre == "&&" { |
| | | args = am.filterData |