From 43f1e57c6c8c0acf2fd92cdd07b7d15852ba6011 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期二, 25 六月 2019 09:58:10 +0800
Subject: [PATCH] 加上切图函数
---
insertdata/insertDataToEs.go | 19 +++++----
util/image.go | 27 +++++++++++++
ruleserver/ruleToformula.go | 32 ++++++++++-----
main.go | 2 +
4 files changed, 60 insertions(+), 20 deletions(-)
diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go
index db93ac7..9d88472 100644
--- a/insertdata/insertDataToEs.go
+++ b/insertdata/insertDataToEs.go
@@ -93,7 +93,7 @@
}
// 寰�ES鎻掓暟鎹�
func InsertToEs(msg ruleserver.ResultMsg) {
- fmt.Println("寰�ES鎻掓暟鎹�")
+ log.Println("寰�ES鎻掓暟鎹�")
for _, sdkinfo := range msg.Tasklab.Sdkinfos {
if sdkinfo.Sdktype == "FaceDetect" {
@@ -102,7 +102,7 @@
faceParam := protomsg.ParamFacePos{}
err1 := proto.Unmarshal(sdkinfo.Sdkdata, &faceParam)
if err1 != nil {
- fmt.Println("瑙f瀽FACE sdk鏈夎", err1)
+ log.Println("瑙f瀽FACE sdk鏈夎", err1)
continue
}
for _, face := range faceParam.Faces {
@@ -151,13 +151,13 @@
requstbody, err := json.Marshal(pervideo)
if err != nil {
- fmt.Println("json parse error ", err)
+ log.Println("json parse error ", err)
return
}
err = EsReq("POST", "http://192.168.1.182:9200/videopersons/perVideoPicture", requstbody)
if err != nil {
- fmt.Println("es can not execute right.")
+ log.Println("es can not execute right.")
}
}
} else {
@@ -170,7 +170,7 @@
yoloObj := protomsg.ParamYoloObj{}
err1 := proto.Unmarshal(sdkinfo.Sdkdata, &yoloObj)
if err1 != nil {
- fmt.Println("瑙f瀽YOLO sdk鏈夎", err1)
+ log.Println("瑙f瀽YOLO sdk鏈夎", err1)
//continue
}
alarmRules := []AlarmRule{}
@@ -189,6 +189,7 @@
i := protomsg.Image{}
err = proto.Unmarshal(bdata, &i)
resp,err = util.PostFormBufferData(weedfsUrl,i.Data,uuid.NewV4().String())
+ log.Println("宸叉姤璀﹀苟涓婁紶鏀瑰抚鍥剧墖鍒版湇鍔″櫒")
}else {
isAlarm = "0"
//continue
@@ -197,12 +198,12 @@
// 鏌ヨ鏈満淇℃伅
flag,localConfig := dbapi.SysSetApi{}.GetServerInfo()
if !flag {
- fmt.Println("鏌ヨ鏈満淇℃伅澶辫触锛�")
+ log.Println("鏌ヨ鏈満淇℃伅澶辫触锛�")
}
// 鏌ヨcameraName
camera,err := dbapi.CameraApi{}.GetCameraById(msg.Cid)
if err == nil {
- fmt.Println("鏌ヨ鎽勫儚鏈轰俊鎭け璐�")
+ log.Println("鏌ヨ鎽勫儚鏈轰俊鎭け璐�")
}
serverIp,err := GetLocalIP()
peraction := Personaction{
@@ -230,13 +231,13 @@
requstbody, err := json.Marshal(peraction)
if err != nil {
- fmt.Println("json parse error ", err)
+ log.Println("json parse error ", err)
return
}
err = EsReq("POST", "http://192.168.1.182:9200/personaction/perVideoAction", requstbody)
if err != nil {
- fmt.Println("es can not execute right.")
+ log.Println("es can not execute right.")
}
} else {
continue
diff --git a/main.go b/main.go
index e6375c9..3e4b9c3 100644
--- a/main.go
+++ b/main.go
@@ -87,6 +87,7 @@
fmt.Println("鏁版嵁闀垮害涓猴細", len(sdkinfo.Sdkdata))
if len(sdkinfo.Sdkdata) > 1 {
// 澶т簬1鎵嶆湁鏁版嵁
+ fmt.Println("----------------------------------------------------------------------------------------------------------")
yoloParam := protomsg.ParamYoloObj{}
err = proto.Unmarshal(sdkinfo.Sdkdata, &yoloParam)
if err != nil {
@@ -105,6 +106,7 @@
if sdkinfo.Sdktype == "FaceDetect" { // 浜鸿劯妫�娴�
fmt.Println("鏁版嵁闀垮害涓猴細", len(sdkinfo.Sdkdata))
if len(sdkinfo.Sdkdata) > 1 {
+ fmt.Println("----------------------------------------------------------------------------------------------------------")
faceParam := protomsg.ParamFacePos{}
err = proto.Unmarshal(sdkinfo.Sdkdata, &faceParam)
if err != nil {
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index e4be299..b6456d1 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -60,6 +60,12 @@
score float64 // 鍖哄煙鍐呯殑鐩爣鐨勭浉浼煎害
proportion float64 // 鍖哄煙鍐呯殑鐩爣鐨勫崰姣�
size float64 // 鍖哄煙鍐呯殑鐩爣鐨勫昂瀵�
+ liker []LikePerson
+}
+
+type LikePerson struct {
+ Id string // 涓庝箣鐩镐技鐨勫簳搴撲汉鍛樼殑id
+ Score float64 // 涓庡簳搴撲汉鍛樼殑鐩镐技鍊�
}
// 姣忎釜鍖哄煙鍐呯殑鍥剧墖鏁版嵁闆嗗悎
@@ -83,7 +89,8 @@
// sdk杈撳嚭鐨勫浘鐗囦笂鍗曚釜鐩爣鐨勬暟鎹�
type PhotoMap struct {
Rects Rect // 鐭╁舰鍖哄煙鍙傛暟
- Score float64 // 鐩镐技搴﹀緱鍒�
+ Score float64 // 鐩镐技搴﹀緱鍒嗭紙鏈夊澶х▼搴﹀儚涓�涓洰鏍囥�備汉鑴革紝浜轰綋鎴栬溅绛夌瓑锛�
+ Liker []LikePerson // 濡傛灉鏄汉鑴哥殑璇濆挨鍏舵槸姣斿锛屽簲瀛樹笅浠栬窡搴曞簱鐨勪汉鍛樼殑鐩镐技鎯呭喌 yolo鐨勮瘽缁檔il灏辫
}
// 浠庨�氶亾涓幏鍙栫殑sdk杈撳嚭鐨勫浘鍍忔暟鎹�(鐩墠涓昏鏄痽olo绠楁硶鐨勬暟鎹�)
@@ -110,7 +117,7 @@
type Result struct {
TaskId string // 浠诲姟id
RuleGroupId string // 瑙勫垯缁刬d
- AlarmLevel int32 // 鎶ヨ绛夌骇
+ AlarmLevel int32 // 鎶ヨ绛夌骇
RuleText string // 鏂囧瓧鐗堣鍒欑粍
}
@@ -189,10 +196,10 @@
func Json2points(areaPoints string) []Point {
var pts []Point
if areaPoints == "" {
- pts = append(pts,Point{0,0})
- pts = append(pts,Point{0,540})
- pts = append(pts,Point{960,540})
- pts = append(pts,Point{960,0})
+ pts = append(pts, Point{0, 0})
+ pts = append(pts, Point{0, 540})
+ pts = append(pts, Point{960, 540})
+ pts = append(pts, Point{960, 0})
} else {
err := json.Unmarshal([]byte(areaPoints), &pts)
if err != nil {
@@ -361,7 +368,7 @@
if flag {
fmt.Println("瀹氭椂鍣ㄦ姤璀︿簡")
// 杩囧畬瑙勫垯鍚庢墦涓爣绛撅紝鍛婅瘔璋冪敤鑰呮湰甯ф暟鎹拡瀵瑰摢涓换鍔″摢缁勮鍒欐姤璀︿簡
- arg.RuleResult = append(arg.RuleResult, Result{taskId, groupRule.GroupId,groupRule.AlarmLevel,groupRule.GroupText})
+ arg.RuleResult = append(arg.RuleResult, Result{taskId, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText})
return true
} else {
return false
@@ -419,7 +426,7 @@
formula = strconv.FormatFloat(arg.size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
}
expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
- result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
+ result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
if result.(bool) {
am.filterData = append(am.filterData, arg) // 寰楀埌绗﹀悎鏉′欢鐨勮繃婊ゆ暟鎹�
}
@@ -452,14 +459,16 @@
}
}
}
+
// 鍐椾綑鎷兼帴
-func splice1 (am *AreaMap) string {
+func splice1(am *AreaMap) string {
args := am.targetNum
- formula := strconv.Itoa(args) + " " + ">" + "0"
+ formula := strconv.Itoa(args) + " " + ">" + "0"
expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
return strconv.FormatBool(result.(bool))
}
+
// 缁欐暟鎹簱鐨勮鍒欒〃杈惧紡浠e弬 args: 涓�鏉″瓙瑙勫垯锛屽尯鍩熸暟鎹�
func transferParameters(rule *protomsg.Rule, am *AreaMap) string {
if rule.PolygonId == am.areaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�
@@ -489,11 +498,12 @@
} else if rule.SdkId == "FaceDetect" { // 浜鸿劯妫�娴�
if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" {
// 濡傛灉鏄笉瑙勭煩鐨勮繛鎺ョ缁熺粺杩斿洖false 瑙勫垯涔熷彧鑳藉垽鏂汉鑴哥殑鐩镐技搴︼紝鎵�浠ヤ笉瀛樺湪鍒殑杩炴帴绗�
+
return "false"
} else {
return "false"
}
- } else {
+ } else if rule.SdkId == "FaceCompare"{
}
diff --git a/util/image.go b/util/image.go
new file mode 100644
index 0000000..ba4ede8
--- /dev/null
+++ b/util/image.go
@@ -0,0 +1,27 @@
+package util
+
+import (
+ "bytes"
+ "fmt"
+ "image"
+ "image/jpeg"
+ "reflect"
+)
+// 鎸夊昂瀵稿幓鍒囧浘
+func subimg(dbyte []byte,x0,y0,x1,y1 int,) []byte{
+
+ bbb := bytes.NewBuffer(dbyte) // 蹇呴』鍔犱竴涓猙uffer 涓嶇劧娌℃湁read鏂规硶灏变細鎶ラ敊
+ m, _, _ := image.Decode(bbb) // 鍥剧墖鏂囦欢瑙g爜
+ rgbImg := m.(*image.YCbCr)
+ subImg := rgbImg.SubImage(image.Rect(x0, y0, x1, y1)) //鍥剧墖瑁佸壀x0 y0 x1 y1
+ fmt.Println(reflect.TypeOf(subImg))
+ //f, _ := os.Create("./test.jpg") //鍒涘缓鏂囦欢
+ //defer f.Close() //鍏抽棴鏂囦欢
+ emptyBuff := bytes.NewBuffer(nil) //寮�杈熶竴涓柊鐨勭┖buff
+ jpeg.Encode(emptyBuff, subImg, nil) //img鍐欏叆鍒癰uff
+ bytes := emptyBuff.Bytes()
+ return bytes
+ //f, _ := os.Create("./test.jpg") //鍒涘缓鏂囦欢
+ //defer f.Close() //鍏抽棴鏂囦欢
+ //jpeg.Encode(f, subImg, nil) //鍐欏叆鏂囦欢
+}
\ No newline at end of file
--
Gitblit v1.8.0