From f490b28775ad05e29fb89444fe78316eda67f492 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期四, 10 十月 2019 16:14:37 +0800
Subject: [PATCH] 人脸加目标信息
---
go.sum | 2
insertdata/insertDataToEs.go | 127 ++++++++++++++++++++++++-----------------
2 files changed, 76 insertions(+), 53 deletions(-)
diff --git a/go.sum b/go.sum
index 6f7db51..803c53e 100644
--- a/go.sum
+++ b/go.sum
@@ -167,8 +167,10 @@
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.21.0 h1:G+97AoqBnmZIT91cLG/EkCoK9NSelj64P8bOHHNmGn0=
google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go
index 12aa46a..78400c8 100644
--- a/insertdata/insertDataToEs.go
+++ b/insertdata/insertDataToEs.go
@@ -2,12 +2,12 @@
import (
"basic.com/valib/logger.git"
- "ruleprocess/structure"
"encoding/base64"
"encoding/json"
"errors"
"net"
"ruleprocess/cache"
+ "ruleprocess/structure"
"strconv"
"time"
@@ -37,39 +37,55 @@
// 浜鸿劯鐨勬暟鎹粨鏋�
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"`
- AlarmRules []AlarmRule `json:"alarmRules"`
- 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"`
- LinkId string `json:"linkId"`
- DetectScore float64 `json:"detectScore"`
- IsAlarm int `json:"isAlarm"`
- IsAckAlarm int `json:"isAckAlarm"`
- IsCollect int `json:"isCollect"`
- IsDelete int `json:"isDelete"`
+ 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"`
+ AlarmRules []AlarmRule `json:"alarmRules"`
+ 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"`
+ LinkId string `json:"linkId"`
+ DetectScore float64 `json:"detectScore"`
+ IsAlarm int `json:"isAlarm"`
+ IsAckAlarm int `json:"isAckAlarm"`
+ IsCollect int `json:"isCollect"`
+ IsDelete int `json:"isDelete"`
BaseInfo []*structure.BaseInfo `json:"baseInfo"`
+ TargetInfo Target
}
+type Target struct {
+ TargetId string `json:"targetId"`
+ TargetScore float64 `json:"targetScore"`
+ TargetLocation Points
+}
+
+type Points struct {
+ TopLeft Point `json:"topLeft"`
+ BottomRight Point `json:"bottomRight"`
+}
+
+type Point struct {
+ Lat float64 `json:"lat"`
+ Lon float64 `json:"lon"`
+}
// yolo琛屼负鐨勬暟鎹粨鏋�
type Personaction struct {
Id string `json:"id"`
@@ -100,8 +116,8 @@
AlarmLevel string `json:"alarmLevel"`
RuleText string `json:"ruleText"`
DefenceState bool `json:"defenceState"`
- IsLink bool `json:"isLink"`
- LinkInfo string `json:"linkInfo"`
+ IsLink bool `json:"isLink"`
+ LinkInfo string `json:"linkInfo"`
}
// 涓�涓猣ace瀵瑰涓鍒欑粍鐨勫綊缃汉鑴哥殑缁撴瀯浣�
@@ -137,16 +153,16 @@
func InsertToEs(msg structure.ResultMsg) {
defer func() {
if err := recover(); err != nil {
- logger.Error("es妯″潡鍎跨殑寮傚父鎹曡幏锛�",err)
+ logger.Error("es妯″潡鍎跨殑寮傚父鎹曡幏锛�", err)
}
}()
localConfig1, err := cache.GetServerInfo()
if err != nil {
panic("閰嶇疆鏂囦欢涓嶅悎娉�")
}
- weedfsUrl = "http://"+localConfig1.WebPicIp+":"+strconv.Itoa(int(localConfig1.WebPicPort))+"/submit"
- videoPersonUrl = "http://"+localConfig1.AlarmIp+":"+strconv.Itoa(int(localConfig1.AlarmPort))+"/"+EsInfo.EsIndex.VideoPersons.IndexName+"/"+EsInfo.EsIndex.VideoPersons.IndexType
- personAction = "http://"+localConfig1.AlarmIp+":"+strconv.Itoa(int(localConfig1.AlarmPort))+"/"+EsInfo.EsIndex.Personaction.IndexName+"/"+EsInfo.EsIndex.Personaction.IndexType
+ weedfsUrl = "http://" + localConfig1.WebPicIp + ":" + strconv.Itoa(int(localConfig1.WebPicPort)) + "/submit"
+ videoPersonUrl = "http://" + localConfig1.AlarmIp + ":" + strconv.Itoa(int(localConfig1.AlarmPort)) + "/" + EsInfo.EsIndex.VideoPersons.IndexName + "/" + EsInfo.EsIndex.VideoPersons.IndexType
+ personAction = "http://" + localConfig1.AlarmIp + ":" + strconv.Itoa(int(localConfig1.AlarmPort)) + "/" + EsInfo.EsIndex.Personaction.IndexName + "/" + EsInfo.EsIndex.Personaction.IndexType
InsertFace(msg, "")
// 濡傛灉鏍囩涓惈鏈夋寔缁椂闂撮娆℃姤璀︾殑timeLabel鐨勮瘽鍒欎笉闇�瑕佽繃浜轰綋杩借釜锛屼笉鐒跺氨娌$殑鎻掑叆浜�
fk := ruleserver.TrackOrNot(msg.RuleResult)
@@ -169,12 +185,12 @@
if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]structure.FaceResult)) > 0 {
logger.Info("寰�ES鎻掍汉鑴告暟鎹�")
faces := []*FaceAndRules{}
- faces = PutFace(faces,msg)
+ faces = PutFace(faces, msg)
//logger.Info("鏁寸悊鍚庣殑鏁版嵁锛�",faces)
if faces != nil {
var imgMaxUrl string = ""
var picTime string = ""
- for _,face := range faces {
+ for _, face := range faces {
// 涓婁紶澶у浘
// 瑙e帇缂╁苟涓婁紶鍥剧墖
bdata, err := util.UnCompress(msg.Data)
@@ -182,11 +198,11 @@
panic("瑙e帇缂╁浘鐗囨椂鍑虹幇閿欒")
}
alarmRules := []AlarmRule{}
- logger.Warn("浜鸿劯id涓猴細",face.Id,"浜鸿劯鐨勮鍒欓暱搴︿负锛�",len(face.rules))
+ logger.Warn("浜鸿劯id涓猴細", face.Id, "浜鸿劯鐨勮鍒欓暱搴︿负锛�", len(face.rules))
//os.Exit(1)
- for _,faceResult := range face.rules {
+ for _, faceResult := range face.rules {
alarm := ChangeToString(faceResult.DefenceState, faceResult.AlarmLevel)
- alarmRules = append(alarmRules, AlarmRule{faceResult.RuleGroupId, alarm, faceResult.RuleText, faceResult.DefenceState,faceResult.IsLink,""})
+ alarmRules = append(alarmRules, AlarmRule{faceResult.RuleGroupId, alarm, faceResult.RuleText, faceResult.DefenceState, faceResult.IsLink, ""})
}
i := protomsg.Image{}
err = proto.Unmarshal(bdata, &i)
@@ -229,6 +245,10 @@
if linkId != "" {
linksId = linkId
}
+ var target = new(Target)
+ target.TargetId = strconv.FormatUint(face.Id, 10)
+ target.TargetScore = face.Score
+ target.TargetLocation = Points{TopLeft:Point{face.Location.X,face.Location.Y},BottomRight:Point{face.Location.X+face.Location.Width,face.Location.Y+face.Location.Height}}
//logger.Info("浜鸿劯鐨刬d:",strconv.FormatUint(face.Id, 10))
//logger.Info("浜鸿劯鐨勫垎鍊硷細",face.Score)
pervideo := PerVideoPicture{
@@ -243,7 +263,7 @@
"",
alarmRules,
time.Now().Format("2006-01-02 15:04:05"), // 鍙娴嬶紝娌℃湁姣斿鏃堕棿
- sex, //鏆傛敼涓轰汉鑴竔d strconv.FormatUint(face.Id, 10)
+ sex, //鏆傛敼涓轰汉鑴竔d strconv.FormatUint(face.Id, 10)
face.ThftRes.Age,
ageDescription, // 鏆傛敼涓哄垎鍊糵mt.Sprintf("%.2f",face.Score)
race,
@@ -263,6 +283,7 @@
0,
0,
face.Liker,
+ *target,
}
requstbody, err := json.Marshal(pervideo)
@@ -284,7 +305,7 @@
}
// 褰掔疆浜鸿劯
-func PutFace(faces []*FaceAndRules,msg structure.ResultMsg)[]*FaceAndRules{
+func PutFace(faces []*FaceAndRules, msg structure.ResultMsg) []*FaceAndRules {
if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]structure.FaceResult)) > 0 {
for _, faceResult := range msg.RuleResult["face"].([]structure.FaceResult) {
faces = hebingFace(faces, faceResult)
@@ -294,28 +315,28 @@
return nil
}
}
-func hebingFace(faces []*FaceAndRules, faceResult structure.FaceResult) []*FaceAndRules{
+func hebingFace(faces []*FaceAndRules, faceResult structure.FaceResult) []*FaceAndRules {
for _, arg := range faceResult.Args {
// 鎷垮埌姣忎竴寮犱汉鑴�
- logger.Info("褰掔疆浜鸿劯鏃剁浉浼艰�呯殑鏁伴噺锛�",len(arg.Liker))
+ logger.Info("褰掔疆浜鸿劯鏃剁浉浼艰�呯殑鏁伴噺锛�", len(arg.Liker))
flag := false
for _, face := range faces {
- for _,lik := range face.Liker {
- logger.Warn("--------鍚堝苟浜鸿劯鏃剁浉浼艰�咃細",lik.PersonId,lik.TableName)
+ for _, lik := range face.Liker {
+ logger.Warn("--------鍚堝苟浜鸿劯鏃剁浉浼艰�咃細", lik.PersonId, lik.TableName)
}
if arg.Id == face.Id {
flag = true
- face.rules = append(face.rules,faceResult.Result)
+ face.rules = append(face.rules, faceResult.Result)
// 鐩镐技鑰呭幓閲嶅綊骞�
- for _,liker := range arg.Liker {
+ for _, liker := range arg.Liker {
flag1 := true
- for _,liker1 := range face.Liker {
+ for _, liker1 := range face.Liker {
if liker.PersonId == liker1.PersonId {
flag1 = false
}
}
if flag1 {
- face.Liker = append(face.Liker,liker)
+ face.Liker = append(face.Liker, liker)
}
}
//face.Liker = append(face.Liker,arg.Liker...)
@@ -354,7 +375,7 @@
if yoloResult.IsLink {
linkInfo = "鑱斿姩浠诲姟"
}
- alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState,yoloResult.IsLink,linkInfo})
+ alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, yoloResult.IsLink, linkInfo})
// 涓婁紶缂撳瓨鏁版嵁鐨勫浘鐗囨嬁鍒皍rl
if yoloResult.Others.CacheData != nil {
//InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
--
Gitblit v1.8.0