panlei
2019-11-13 33804d4591d5021b4dec1da5f5152422282409c6
--暂存
2个文件已修改
23 ■■■■ 已修改文件
algorithm/middleware/middleware.go 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
algorithm/middleware/middleware.go
@@ -14,7 +14,7 @@
    "time"
)
func Entrance (args *structure.SdkDatas,groupRule protomsg.GroupRule,lable *structure.Others,message *protomsg.SdkMessage) (bool,string,string){
func Entrance (args *structure.SdkDatas,groupRule protomsg.GroupRule,lable *structure.Others,message *protomsg.SdkMessage) (bool,[]*structure.Arg,string,string){
    resultSplice := []*structure.LittleRuleResult{}
    sdkNames := ""
    polygonId := ""
@@ -214,9 +214,9 @@
            panic("规则有误,得到的数学公式不可解析")
        }
        result, _ := expression.Evaluate(nil) // 得到数学公式的结果
        return result.(bool),sdkNames,polygonId
        return result.(bool),nil,sdkNames,polygonId
    } else {
        return false,sdkNames,polygonId
        return false,nil,sdkNames,polygonId
    }
}
ruleserver/ruleToformula.go
@@ -77,7 +77,7 @@
    }
}
func CallMiddleware(args *structure.SdkDatas,rule protomsg.GroupRule,lable *structure.Others,message *protomsg.SdkMessage) (bool, string, string){
func CallMiddleware(args *structure.SdkDatas,rule protomsg.GroupRule,lable *structure.Others,message *protomsg.SdkMessage) (bool, []*structure.Arg, string, string){
    p,err :=  plugin.Open("./algorithm/middleware.so")
    if err != nil {
        panic(err)
@@ -86,8 +86,8 @@
    if err1 != nil {
        panic("没有找到中间件入口函数")
    }
    a,b,c := f.(func(args *structure.SdkDatas,rule protomsg.GroupRule,label *structure.Others,message *protomsg.SdkMessage)(bool, string, string))(args,rule,lable,message)
    return a,b,c
    a,b,c,d := f.(func(args *structure.SdkDatas,rule protomsg.GroupRule,label *structure.Others,message *protomsg.SdkMessage)(bool,[]*structure.Arg, string, string))(args,rule,lable,message)
    return a,b,c,d
}
func RunRule(args *structure.SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage, label structure.Others) (bool,[]int) {
@@ -102,11 +102,12 @@
    result := false
    sdkNames := ""
    polygonId := ""
    targets := []*structure.Arg{} // 符合条件的目标
    // 把一帧数据和一组规则发给算法部分,得出判断结果
    result,sdkNames,polygonId = CallMiddleware(args,*groupRule,&label,message)
    result,targets,sdkNames,polygonId = CallMiddleware(args,*groupRule,&label,message)
    logger.Info("符合条件的目标数据:",targets)
    if result {
        // 最后过持续时间等时间维度的条件   把时间规则位置调整到这个位置是为了缓存数据
        // 最后过持续时间等时间维度的条件   把时间规则位置调整到这个位置是为了缓存数据         !!!!!ps: 对画面中单个目标做定时器的不用再过画面定时器
        cacheId := ""
        for j := 0; j < len(groupRule.Rules); j++ {
            for _, sdkData := range args.Sdkdata {
@@ -173,12 +174,12 @@
            }
            var labelTypes []int // 0为yolo标签,1为face标签 2为两者标签
            if sdkNames != "" {
                args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId, islink,label,})
                args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId, islink,label})
                labelTypes = append(labelTypes,0)
                //logger.Info("-------------------yolo结果标签长度", len(args.RuleResult["yolo"].([]Result)))
            }
            if faceFlag {
                args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.TargetResult), structure.TargetResult{structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []structure.TargetInfo{}, polygonId, islink,label,}, faces})
                args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.TargetResult), structure.TargetResult{structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []structure.TargetInfo{}, polygonId, islink,label}, faces})
                //logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]FaceResult)))
                labelTypes = append(labelTypes,1)
            }