From a7817b91bc678223fe4224bbba813b1097715748 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期一, 02 十二月 2019 16:19:21 +0800
Subject: [PATCH] update

---
 main.go |   94 +++++++++++++++++++++++++++-------------------
 1 files changed, 55 insertions(+), 39 deletions(-)

diff --git a/main.go b/main.go
index cdbf57b..25db310 100644
--- a/main.go
+++ b/main.go
@@ -7,7 +7,7 @@
 
 	"track/gohumantrack"
 
-	"gocv.io/x/gocv"
+	"basic.com/valib/goffmpeg.git"
 )
 
 var (
@@ -20,55 +20,71 @@
 	flag.StringVar(&url2, "cam2", "", "url")
 }
 func main() {
+	flag.Parse()
+	fmt.Println("url1: ", url1, " url2: ", url2)
 	if len(url1) == 0 || len(url2) == 0 {
 		fmt.Println("url null")
 	}
 
-	cam1, err := gocv.OpenVideoCapture(url1)
-	if err != nil {
-		fmt.Println("cv open url1 error: ", err)
-		return
-	}
-	cam2, err := gocv.OpenVideoCapture(url2)
-	if err != nil {
-		fmt.Println("cv open url2 error: ", err)
-		return
-	}
+	goffmpeg.InitFFmpeg("./runtime/libcffmpeg.so")
 
-	img1 := gocv.NewMat()
-	defer img1.Close()
-	img2 := gocv.NewMat()
-	defer img2.Close()
+	cam1 := goffmpeg.New(false, false)
+	cam1.Run(url1)
+	cam1.BuildDecoder()
+	cam1.CloseStream()
+
+	cam2 := goffmpeg.New(false, false)
+	cam2.Run(url2)
+	cam2.BuildDecoder()
+	cam2.CloseStream()
 
 	tracker := gohumantrack.NewHumanTracker(0, 2, 0)
+	fmt.Println("version: ", tracker.GetVersion())
 	for {
-		if ok := cam1.Read(&img1); !ok || img1.Empty() {
-			fmt.Println("read url1 image error")
-			time.Sleep(40 * time.Millisecond)
-			continue
-		}
-		if ok := cam2.Read(&img2); !ok || img2.Empty() {
-			fmt.Println("read url2 image error")
-			time.Sleep(40 * time.Millisecond)
-			continue
-		}
+		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:    img1.ToBytes(),
-			Width:   img1.Cols,
-			Height:  img1.Rows,
-			Channel: img1.Channels,
+			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)
+			time.Sleep(38 * time.Millisecond)
 		}
-		images = append(images, img)
-		img = gohumantrack.ImageHumanTracker{
-			Data:    img2.ToBytes(),
-			Width:   img2.Cols,
-			Height:  img2.Rows,
-			Channel: img2.Channels,
-		}
-		images = append(images, img)
 
 	}
 	tracker.Free()
+
+	goffmpeg.FreeFFmpeg()
 }

--
Gitblit v1.8.0