From 6d6e6d425c4fe63a487ff27be9341671b2c1dd93 Mon Sep 17 00:00:00 2001
From: stydb <suntianyu0923@gmail.com>
Date: 星期二, 03 十二月 2019 11:12:36 +0800
Subject: [PATCH] update

---
 main.go |   90 +++++++++++++++++++++++++--------------------
 1 files changed, 50 insertions(+), 40 deletions(-)

diff --git a/main.go b/main.go
index 411172c..44c902a 100644
--- a/main.go
+++ b/main.go
@@ -6,7 +6,7 @@
 	"time"
 
 	"track/gohumantrack"
-
+	"track/goconv"
 	"basic.com/valib/goffmpeg.git"
 )
 
@@ -19,6 +19,54 @@
 	flag.StringVar(&url1, "cam1", "", "url")
 	flag.StringVar(&url2, "cam2", "", "url")
 }
+
+func run(cam1, cam2 *goffmpeg.GoFFMPEG, tracker *gohumantrack.HumanTracker) bool {
+	data1, ow1, oh1, _ := cam1.GetYUV()
+	data2, ow2, oh2, _ := cam2.GetYUV()
+	if ow1 > 0 && oh1 > 0 && ow2 > 0 && oh2 > 0 {
+		bgr1 := goconv.YUV2BGR(data1, ow1, oh1)
+		bgr2 := goconv.YUV2BGR(data2, ow2, oh2)
+		if bgr1 == nil || bgr2 == nil{
+			return false
+		}
+		var images []gohumantrack.ImageHumanTracker
+		img := gohumantrack.ImageHumanTracker{
+			Data:    bgr1,
+			Width:   ow1,
+			Height:  oh1,
+			Channel: 3,
+		}
+		images = append(images, img)
+		img = gohumantrack.ImageHumanTracker{
+			Data:    bgr2,
+			Width:   ow2,
+			Height:  oh2,
+			Channel: 3,
+		}
+		images = append(images, img)
+		res, err := tracker.Process(images)
+		if err == nil {
+			for _, v := range res {
+				fmt.Printf("result size: %d\n", v.FgNum)
+				for i := 0; i < int(v.FgNum); i++ {
+					r := v.Fginfo[i]
+					if r.Confidence > 0 {
+						fmt.Printf(" Index %d Rect: %dx%dx%dx%d", i, r.Left, r.Top, r.Right, r.Bottom)
+						fmt.Printf(" Confidence: %f", r.Confidence*100)
+						fmt.Printf(" Center: %dx%d", r.X, r.Y)
+						fmt.Printf(" ID: %d\n", r.ID)
+					}
+				}
+
+			}
+		} else {
+			fmt.Println("process error: ", err)
+		}
+		return true
+	} 
+	return false
+}
+
 func main() {
 	flag.Parse()
 	fmt.Println("url1: ", url1, " url2: ", url2)
@@ -42,45 +90,7 @@
 	cam2.CloseStream()
 
 	for {
-		data1, ow1, oh1, _ := cam1.GetYUV()
-		data2, ow2, oh2, _ := cam2.GetYUV()
-		if ow1 > 0 && oh1 > 0 && ow2 > 0 && oh2 > 0 {
-
-			var images []gohumantrack.ImageHumanTracker
-			img := gohumantrack.ImageHumanTracker{
-				Data:    data1,
-				Width:   ow1,
-				Height:  oh1,
-				Channel: 3,
-			}
-			images = append(images, img)
-			img = gohumantrack.ImageHumanTracker{
-				Data:    data2,
-				Width:   ow2,
-				Height:  oh2,
-				Channel: 3,
-			}
-			images = append(images, img)
-			res, err := tracker.Process(images)
-			if err == nil {
-				for _, v := range res {
-					fmt.Printf("result size: %d\n", v.FgNum)
-					for i := 0; i < int(v.FgNum); i++ {
-						r := v.Fginfo[i]
-						if r.Confidence > 0 {
-							fmt.Printf(" Index %d Rect: %dx%dx%dx%d", i, r.Left, r.Top, r.Right, r.Bottom)
-							fmt.Printf(" Confidence: %f", r.Confidence*100)
-							fmt.Printf(" Center: %dx%d", r.X, r.Y)
-							fmt.Printf(" ID: %d\n", r.ID)
-						}
-					}
-
-				}
-			} else {
-				fmt.Println("process error: ", err)
-			}
-		} else {
-			//			fmt.Println("cam1 size: ", ow1, "x", oh1, " cam2 size: ", ow2, "x", oh2)
+		if !run(cam1, cam2, tracker){
 			time.Sleep(38 * time.Millisecond)
 		}
 

--
Gitblit v1.8.0