From ce15b43db3e60acc65ddd25de253b8577c2693aa Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期三, 08 五月 2019 14:11:03 +0800
Subject: [PATCH] context使用

---
 analysis/demo/winYolo.go |   46 ++++++++++++++++++++++++++++++++--------------
 1 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/analysis/demo/winYolo.go b/analysis/demo/winYolo.go
index befe3e6..9b43381 100644
--- a/analysis/demo/winYolo.go
+++ b/analysis/demo/winYolo.go
@@ -3,8 +3,10 @@
 import (
 	"analysis/valib/gosdk"
 	srv "analysis/work/service"
+	"fmt"
 	"image"
 	"image/color"
+	"math/rand"
 	"strconv"
 	"sync"
 
@@ -53,12 +55,25 @@
 	}
 }
 
-var yoloDetInfo []gosdk.CObjInfo
-var startYolo bool
-var m sync.Mutex
+type Yolo struct {
+	yoloDetInfo []gosdk.CObjInfo
+	startYolo   bool
+	m           sync.Mutex
+}
+
+func NewYolo() *Yolo {
+	return &Yolo{
+		startYolo: false,
+	}
+}
 
 // ShowYolo show yolo result
-func ShowYolo(ch <-chan srv.ImageInfo) {
+func (y *Yolo) ShowYolo(ch <-chan srv.ImageInfo) {
+	y.ShowYoloWithName(ch, "Yolo")
+}
+
+// ShowYoloWithName show yolo result
+func (y *Yolo) ShowYoloWithName(ch <-chan srv.ImageInfo, winName string) {
 
 	cfg := "./data/yolo/cfg/yolov3.cfg"
 	weights := "./data/yolo/yolov3.weights"
@@ -66,7 +81,10 @@
 
 	yolo := gosdk.InitYolo(cfg, weights, name, 0)
 
-	window := gocv.NewWindow("Yolo")
+	winName = winName + strconv.Itoa(rand.Intn(10))
+	window := gocv.NewWindow(winName)
+
+	fmt.Println("create window : ", winName)
 
 	pic := gocv.NewMat()
 
@@ -74,25 +92,25 @@
 
 		i := <-ch
 
-		if !startYolo {
+		if !y.startYolo {
 			go func(yolo *gosdk.YoloHandle, i srv.ImageInfo) {
-				startYolo = true
+				y.startYolo = true
 				img := gosdk.SDKImage{Data: i.Data, Width: i.Width, Height: i.Height}
 				obj := gosdk.YoloDetect(yolo, img, 0.4, 0)
 
-				m.Lock()
-				yoloDetInfo = obj
-				m.Unlock()
-				startYolo = false
+				y.m.Lock()
+				y.yoloDetInfo = obj
+				y.m.Unlock()
+				y.startYolo = false
 			}(yolo, i)
 		}
 
 		img, _ := gocv.NewMatFromBytes(i.Height, i.Width, gocv.MatTypeCV8UC3, i.Data)
 
 		var obj []gosdk.CObjInfo
-		m.Lock()
-		obj = yoloDetInfo
-		m.Unlock()
+		y.m.Lock()
+		obj = y.yoloDetInfo
+		y.m.Unlock()
 		cvDrawObject(&img, obj)
 		// show obj
 		gocv.Resize(img, &pic, image.Pt(0, 0), 0.5, 0.5, gocv.InterpolationDefault)

--
Gitblit v1.8.0