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