panlei
2019-07-24 0ad8c150817dca075c587f1c2f7b44c407fd1364
变更人脸标签结构
2个文件已修改
171 ■■■■ 已修改文件
insertdata/insertDataToEs.go 166 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
insertdata/insertDataToEs.go
@@ -132,90 +132,92 @@
// 往es中插入人脸数据
func InsertFace(msg ruleserver.ResultMsg) {
    if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]ruleserver.Arg)) > 0 {
    if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]ruleserver.FaceResult)) > 0 {
        logger.Info("往ES插人脸数据")
        for _, face := range msg.RuleResult["face"].([]ruleserver.Arg) {
            // 上传大图
            // 解压缩并上传图片
            bdata, err := util.UnCompress(msg.Data)
            if err != nil {
                panic("解压缩图片时出现错误")
            }
            i := protomsg.Image{}
            err = proto.Unmarshal(bdata, &i)
            bigPhotoUrl := make(map[string]interface{})
            bigPhotoUrl, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String())
            logger.Debug("========大图路径:", bigPhotoUrl)
            // 人脸检测,没有相似的底库人员
            localConfig, err := cache.GetServerInfo()
            if err != nil {
                logger.Error("查询本机信息失败!")
            }
            serverIp, err := GetLocalIP()
            // 查询cameraName
            camera, err := cache.GetCameraById(msg.Cid)
            if err != nil {
                logger.Error("查询摄像机信息失败")
            }
            bytes := util.SubImg(i, int(face.Location.X), int(face.Location.Y), int(face.Location.X+face.Location.Width), int(face.Location.Y+face.Location.Height))
            resp, err := util.PostFormBufferData1(weedfsUrl, bytes, uuid.NewV4().String())
            if err != nil {
                logger.Error("上传小图出错")
            }
            logger.Info("================小图地址:", resp["fileUrl"].(string))
            sex := ""
            if face.ThftRes.Gender == 1 {
                sex = "男"
            } else {
                sex = "女"
            }
            race := getRaceString(face.ThftRes.Race)
            ageDescription := getDescription(face.ThftRes.Age)
        for _, faceResult := range msg.RuleResult["face"].([]ruleserver.FaceResult) {
            for _,face := range faceResult.Args  {
                // 上传大图
                // 解压缩并上传图片
                bdata, err := util.UnCompress(msg.Data)
                if err != nil {
                    panic("解压缩图片时出现错误")
                }
                i := protomsg.Image{}
                err = proto.Unmarshal(bdata, &i)
                bigPhotoUrl := make(map[string]interface{})
                bigPhotoUrl, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String())
                logger.Debug("========大图路径:", bigPhotoUrl)
                // 人脸检测,没有相似的底库人员
                localConfig, err := cache.GetServerInfo()
                if err != nil {
                    logger.Error("查询本机信息失败!")
                }
                serverIp, err := GetLocalIP()
                // 查询cameraName
                camera, err := cache.GetCameraById(msg.Cid)
                if err != nil {
                    logger.Error("查询摄像机信息失败")
                }
                bytes := util.SubImg(i, int(face.Location.X), int(face.Location.Y), int(face.Location.X+face.Location.Width), int(face.Location.Y+face.Location.Height))
                resp, err := util.PostFormBufferData1(weedfsUrl, bytes, uuid.NewV4().String())
                if err != nil {
                    logger.Error("上传小图出错")
                }
                logger.Info("================小图地址:", resp["fileUrl"].(string))
                sex := ""
                if face.ThftRes.Gender == 1 {
                    sex = "男"
                } else {
                    sex = "女"
                }
                race := getRaceString(face.ThftRes.Race)
                ageDescription := getDescription(face.ThftRes.Age)
            pervideo := PerVideoPicture{
                uuid.NewV4().String(),
                msg.Cid,
                camera.Addr,
                i.Timestamp,
                strings.Split(bigPhotoUrl["fileUrl"].(string), "/")[1],
                msg.Tasklab.Taskid,
                msg.Tasklab.Taskname,
                "人脸",
                "",
                time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间
                sex,
                face.ThftRes.Age,
                ageDescription,
                race,
                face.ThftRes.Smile,
                face.ThftRes.Beauty,
                string(face.Feature),
                []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
                "暂无集群",
                localConfig.ServerId,
                localConfig.ServerName,
                serverIp,
                "",
                face.Score,
                1,
                0,
                0,
                0,
                face.Liker,
            }
            requstbody, err := json.Marshal(pervideo)
                pervideo := PerVideoPicture{
                    uuid.NewV4().String(),
                    msg.Cid,
                    camera.Addr,
                    i.Timestamp,
                    strings.Split(bigPhotoUrl["fileUrl"].(string), "/")[1],
                    msg.Tasklab.Taskid,
                    msg.Tasklab.Taskname,
                    "人脸",
                    "",
                    time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间
                    sex,
                    face.ThftRes.Age,
                    ageDescription,
                    race,
                    face.ThftRes.Smile,
                    face.ThftRes.Beauty,
                    string(face.Feature),
                    []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
                    "暂无集群",
                    localConfig.ServerId,
                    localConfig.ServerName,
                    serverIp,
                    "",
                    face.Score,
                    1,
                    0,
                    0,
                    0,
                    face.Liker,
                }
                requstbody, err := json.Marshal(pervideo)
            if err != nil {
                logger.Info("json parse error ", err)
                return
            }
            resp1, err1 := EsReq("POST", videoPersonUrl, requstbody)
            if err1 != nil {
                logger.Error("上传ES出错!---", err1)
            } else {
                logger.Info("插入es返回的信息:", resp1)
                // 发出录像信号
                ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: resp1["_id"].(string), CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, ImgId: i.Id, SdkIds: []string{}})
                if err != nil {
                    logger.Info("json parse error ", err)
                    return
                }
                resp1, err1 := EsReq("POST", videoPersonUrl, requstbody)
                if err1 != nil {
                    logger.Error("上传ES出错!---", err1)
                } else {
                    logger.Info("插入es返回的信息:", resp1)
                    // 发出录像信号
                    ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: resp1["_id"].(string), CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, ImgId: i.Id, SdkIds: []string{}})
                }
            }
        }
    }
@@ -345,7 +347,7 @@
        if msg.RuleResult["cacheData"] != nil {
            InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
            // 把缓存的数据上传后得到地址存进去
        }
        peraction := Personaction{
            uuid.NewV4().String(),
ruleserver/ruleToformula.go
@@ -93,7 +93,7 @@
// 过规则库打上的标签
type FaceResult struct {
    Result
    Args         []*Arg
    Args         []Arg
}
type LittleRuleResult struct {
    SdkName string // 记录下此结果是哪个sdk的结果
@@ -299,7 +299,8 @@
                logger.Info("-------------------yolo结果标签长度", len(args.RuleResult["yolo"].([]Result)))
            }
            if args.RuleResult["face"] != nil {
                logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]Arg)))
                args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId},faces})
                logger.Info("-------------------face结果标签", len(args.RuleResult["face"].(FaceResult).Args))
            }
            // 最后过持续时间等时间维度的条件   把时间规则位置调整到这个位置是为了缓存数据
            for j := 0; j < len(groupRule.Rules); j++ {