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