panlei
2019-07-10 45184ccbcb5f787f09b62b0ddf4308004a46d27a
关掉yolo插入es
3个文件已修改
316 ■■■■ 已修改文件
insertdata/insertDataToEs.go 160 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
insertdata/insertDataToEs.go
@@ -274,86 +274,86 @@
            }
        }
    }
    if msg.RuleResult["yolo"] != nil && len(msg.RuleResult["yolo"].([]ruleserver.Result)) > 0 {
        logger.Info("往ES插yolo数据")
        var sdkNames string = ""
        alarmRules := []AlarmRule{}
        for _, yoloResult := range msg.RuleResult["yolo"].([]ruleserver.Result) {
            sdkNames = sdkNames + yoloResult.SdkName
            alarm := ChangeToString(yoloResult.AlarmLevel)
            alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText})
        }
        isAlarm := 0
        resp := make(map[string]interface{})
        if len(alarmRules) > 0 {
            isAlarm = 1
            // 解压缩并上传图片
            bdata, err := util.UnCompress(msg.Data)
            if err != nil {
                panic("解压缩图片时出现错误")
            }
            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))
            if err != nil {
                logger.Error("画框或上传图片服务器出错", err)
            } else {
                logger.Info("已报警并上传改帧图片到服务器")
            }
        } else {
            isAlarm = 0
            // 不是报警数据不存
            return
        }
        // logger.Println("图片上传返回值:", resp)
        // 查询本机信息
        localConfig, err := cache.GetServerInfo()
        if err != nil {
            logger.Error("查询本机信息失败!")
        }
        // 查询cameraName
        camera, err := cache.GetCameraById(msg.Cid)
        if err != nil {
            logger.Error("查询摄像机信息失败")
        }
        serverIp, err := GetLocalIP()
        peraction := Personaction{
            uuid.NewV4().String(),
            msg.Cid,
            camera.Name,
            camera.Addr,
            msg.Tasklab.Taskid,
            msg.Tasklab.Taskname,
            sdkNames,
            "",
            alarmRules,
            localConfig.ServerId,
            localConfig.ServerName,
            serverIp,
            "",
            []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
            time.Now().Format("2006-01-02 15:04:05"),
            "",
            isAlarm,
            0,
            0,
            0,
        }
        requstbody, err := json.Marshal(peraction)
        if err != nil {
            logger.Info("json parse error ", err)
            return
        }
        err = EsReq("POST", "http://192.168.1.182:9200/personaction/perVideoAction", requstbody)
        if err != nil {
            logger.Error("往ES插入数据失败", err)
        } else {
            logger.Info("__________________________________________往ES插入yolo数据成功")
        }
    }
    //if msg.RuleResult["yolo"] != nil && len(msg.RuleResult["yolo"].([]ruleserver.Result)) > 0 {
    //    logger.Info("往ES插yolo数据")
    //    var sdkNames string = ""
    //    alarmRules := []AlarmRule{}
    //    for _, yoloResult := range msg.RuleResult["yolo"].([]ruleserver.Result) {
    //        sdkNames = sdkNames + yoloResult.SdkName
    //        alarm := ChangeToString(yoloResult.AlarmLevel)
    //        alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText})
    //    }
    //    isAlarm := 0
    //    resp := make(map[string]interface{})
    //    if len(alarmRules) > 0 {
    //        isAlarm = 1
    //        // 解压缩并上传图片
    //        bdata, err := util.UnCompress(msg.Data)
    //        if err != nil {
    //            panic("解压缩图片时出现错误")
    //        }
    //        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))
    //        if err != nil {
    //            logger.Error("画框或上传图片服务器出错", err)
    //        } else {
    //            logger.Info("已报警并上传改帧图片到服务器")
    //        }
    //    } else {
    //        isAlarm = 0
    //        // 不是报警数据不存
    //        return
    //    }
    //    // logger.Println("图片上传返回值:", resp)
    //    // 查询本机信息
    //    localConfig, err := cache.GetServerInfo()
    //    if err != nil {
    //        logger.Error("查询本机信息失败!")
    //    }
    //    // 查询cameraName
    //    camera, err := cache.GetCameraById(msg.Cid)
    //    if err != nil {
    //        logger.Error("查询摄像机信息失败")
    //    }
    //    serverIp, err := GetLocalIP()
    //    peraction := Personaction{
    //        uuid.NewV4().String(),
    //        msg.Cid,
    //        camera.Name,
    //        camera.Addr,
    //        msg.Tasklab.Taskid,
    //        msg.Tasklab.Taskname,
    //        sdkNames,
    //        "",
    //        alarmRules,
    //        localConfig.ServerId,
    //        localConfig.ServerName,
    //        serverIp,
    //        "",
    //        []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
    //        time.Now().Format("2006-01-02 15:04:05"),
    //        "",
    //        isAlarm,
    //        0,
    //        0,
    //        0,
    //    }
    //    requstbody, err := json.Marshal(peraction)
    //
    //    if err != nil {
    //        logger.Info("json parse error ", err)
    //        return
    //
    //    }
    //    err = EsReq("POST", "http://192.168.1.182:9200/personaction/perVideoAction", requstbody)
    //    if err != nil {
    //        logger.Error("往ES插入数据失败", err)
    //    } else {
    //        logger.Info("__________________________________________往ES插入yolo数据成功")
    //    }
    //}
}
// 获取本机ip
main.go
@@ -190,158 +190,6 @@
                continue
            }
        }
        //if sdkinfo.Sdktype == "FaceExtract" { // 人脸提取
        //    arg := ruleserver.SdkData{}
        //    arg.TaskId = m.Tasklab.Taskid
        //    arg.SdkId = sdkinfo.Sdkid
        //    arg.SdkName = sdkinfo.SdkName
        //    arg.IsYolo = false
        //    bdata, err := util.UnCompress(m.Data)
        //    if err != nil {
        //        panic("解压缩图片时出现错误")
        //    }
        //    i := protomsg.Image{}
        //    err = proto.Unmarshal(bdata, &i)
        //    arg.ImageWidth = int(i.Width)
        //    arg.ImageHeight = int(i.Height)
        //    // 暂时写死,sdk还没有这俩算法
        //    arg.KeepRight = false
        //    arg.IsStatic = false
        //    if len(sdkinfo.Sdkdata) > 1 {
        //        faceParam := protomsg.ParamFaceFeature{}
        //        err = proto.Unmarshal(sdkinfo.Sdkdata, &faceParam)
        //        if err != nil {
        //            logger.Info("解析FACE sdk数据时出现错误", err)
        //            continue
        //        }
        //        for _,faceExtCom := range faceParam.ExtComp  {
        //            binfos := protomsg.Binfos{}
        //            err := proto.Unmarshal(faceExtCom.Comp, &binfos)
        //            if err != nil {
        //                logger.Info("解析人脸比对数据时出现错误", err)
        //                continue
        //            }
        //            logger.Info("_________________________________________________________________解析出的人脸的相似的底库数据",binfos.Infos[0].CompareScore)
        //        }
        //        logger.Info("------当前算法name",sdkinfo.SdkName,"--------------看看人脸提取中有几个目标:",len(faceParam.ExtComp))
        //        for _, extComp := range faceParam.ExtComp {
        //            baseinfos := protomsg.Binfos{}
        //            err1 := proto.Unmarshal(extComp.Comp, &baseinfos)
        //            if err1 != nil {
        //                logger.Info("解析FACE sdk数据时出现错误", err)
        //                continue
        //            }
        //            photoMap := ruleserver.PhotoMap{Rects: rectFormat(extComp.Pos.Pos.RcFace), Score: float64(extComp.Pos.Pos.Quality)*100, IsYolo:false,ThftRes:*(extComp.Pos.Result),Liker:baseinfos.Infos}
        //            arg.Photo = append(arg.Photo, photoMap)
        //        }
        //        args.Sdkdata = append(args.Sdkdata,&arg)
        //    } else {
        //        continue
        //    }
        //}
    }
    return m
}
func DrawPolygonOnImage()(maps map[string]interface{}, err0 error){
    // draw the rook
    //rook := gocv.NewMatWithSize(w, w, gocv.MatTypeCV8UC3)
    //imgs := gocv.NewMat()
    ddd, err := RetrieveROM("./105.jpg")
    if err != nil {
        logger.Info("解码有误",err)
    }
    bbb := bytes.NewBuffer(ddd)  // 必须加一个buffer 不然没有read方法就会报错
    rook, _ := gocv.NewMatFromBytes(500, 500, gocv.MatTypeCV8UC3, bbb.Bytes())
    defer rook.Close()
    green := color.RGBA{0, 255, 0, 0}
    points := [][]image.Point{
        {
            image.Pt(100., 100),
            image.Pt(100., 400),
            image.Pt(400, 400),
            image.Pt(400, 100),
        },
    }
    gocv.FillPoly(&rook, points, green)
    // 上传
    //fdata,_ := gocv.IMEncode(".jpg",rook)
    //body := &bytes.Buffer{}
    //writer := multipart.NewWriter(body)
    //_, err1 := writer.CreateFormFile("file", "fasjuierf")
    //if err1 != nil {
    //    return nil, err1
    //}
    //boundary := writer.Boundary()
    ////close_string := fmt.Sprintf("\r\n--%s--\r\n", boundary)
    //close_buf := bytes.NewBufferString(fmt.Sprintf("\r\n--%s--\r\n", boundary))
    //file := bytes.NewBuffer(fdata)
    //request_reader := io.MultiReader(body, file, close_buf)
    ////_, err = io.Copy(part, file)
    ////writer.WriteField(key, val)
    //request, err := http.NewRequest("POST", "http://192.168.1.182:6333/submit", request_reader)
    //request.Header.Add("Content-Type", writer.FormDataContentType())
    //timeout := time.Duration(5 * time.Second) //超时时间50ms
    //client := &http.Client{Timeout: timeout}
    //resp, err := client.Do(request)
    //if err != nil {
    //    logger.Fatal(err)
    //    return nil, err
    //}
    //defer func() {
    //    if r := recover(); r != nil {
    //        fmt.Printf("panic的内容%v\n", r)
    //        msg := "上传图片服务器异常"
    //        if _, ok := r.(error); ok {
    //            msg = r.(error).Error()
    //            logger.Info("panic--recover()得到的是error类型")
    //        }
    //        if _, ok := r.(string); ok {
    //            msg = r.(string)
    //            logger.Info("panic--recover()得到的是string类型")
    //        }
    //        err0 = errors.New(msg)
    //    }
    //}()
    //defer resp.Body.Close()
    //{
    //    body := &bytes.Buffer{}
    //    _, err := body.ReadFrom(resp.Body)
    //    if err != nil {
    //        logger.Fatal(err)
    //    }
    //    logger.Info(resp.StatusCode)
    //    //logger.Info(resp.Header)
    //    logger.Info(body)
    //    //decoder := json.NewDecoder(strings.NewReader(body.String()))
    //    decoder := make(map[string]interface{})
    //    if err := json.Unmarshal([]byte(body.String()), &decoder); err != nil {
    //        return nil, err
    //    }
        return nil, nil
    //}
}
// 把图片转成二进制流
func RetrieveROM(filename string) ([]byte, error) {
    file, err := os.Open(filename)
    if err != nil {
        return nil, err
    }
    defer file.Close()
    stats, statsErr := file.Stat()
    if statsErr != nil {
        return nil, statsErr
    }
    var size int64 = stats.Size()
    bytes := make([]byte, size)
    bufr := bufio.NewReader(file)
    _, err = bufr.Read(bytes)
    return bytes, err
}
ruleserver/ruleToformula.go
@@ -184,7 +184,9 @@
// 把sdk从数据帧上提取的按照区域分类归置
func SdkDataFormat(cameraId string, arg *SdkData, cameraPolygons []protomsg.CameraPolygon) {
    logger.Info("--------看看解析出来的数据---", *arg)
    for _,photo := range arg.Photo{
        logger.Info("--------看看解析出来的数据---", 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}