From 9b01e3eec13fae6c8e855fe2f4b331b9b20ce638 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期二, 14 一月 2020 14:02:16 +0800
Subject: [PATCH] switch to yolo debug

---
 run.go |   53 +++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 45 insertions(+), 8 deletions(-)

diff --git a/run.go b/run.go
index dc2ae58..0a78442 100644
--- a/run.go
+++ b/run.go
@@ -1,13 +1,19 @@
 package main
 
 import (
+	"bufio"
 	"context"
+	"fmt"
+	"io/ioutil"
+	"os"
+	"time"
 	"unsafe"
 
 	"basic.com/libgowrapper/sdkhelper.git"
 	"basic.com/valib/gogpu.git"
 
 	"basic.com/pubsub/protomsg.git"
+	"basic.com/valib/godraw.git"
 
 	"basic.com/valib/deliver.git"
 	"github.com/gogo/protobuf/proto"
@@ -82,8 +88,13 @@
 			return
 		default:
 
-			msg, err = c.Recv()
-			if err != nil {
+			for {
+				msg, err = c.Recv()
+				if err == nil {
+					break
+				}
+				s.fnLogger("REID~~~~~~Recv From HumanTrack error: ", err)
+				time.Sleep(5 * time.Millisecond)
 				continue
 			}
 
@@ -99,17 +110,47 @@
 			}
 			s.fnLogger("REID~~~~~~Recv Image:", len(i.Data))
 
+			/////////////////////////////////
+			if jpg, err := godraw.ToJpeg(i.Data, int(i.Width), int(i.Height), nil); err == nil {
+				ioutil.WriteFile("./pic.jpg", jpg, 0644)
+			}
+			/////////////////////////////////
 			feat := s.handle.Extract2(unsafe.Pointer(&i.Data[0]), int(i.Width), int(i.Height), 3)
 			if feat == nil {
 				// feat = make([]float32, 1)
 			} else {
-				s.fnLogger("REID~~~~~~Run Reid Use GPU: ", s.gpu)
 				for k := 0; k < 3; k++ {
 					s.fnLogger("REID~~~~~~extractor---human_feats------%f", feat[k+2000])
 				}
+				s.fnLogger("REID~~~~~~Run Reid Use GPU: ", s.gpu)
+
+				/////////////////////////////////
+				if f, err := os.Create("./reid-feat.txt"); err == nil {
+					defer f.Close()
+
+					w := bufio.NewWriter(f)
+					for k, v := range feat {
+						lineStr := fmt.Sprintf("%d->%f", k, v)
+						fmt.Fprintln(w, lineStr)
+					}
+					w.Flush()
+				}
+				/////////////////////////////////
+
 			}
 			buf := float32SliceAsByteSlice(feat)
-			c.Send(buf)
+			ioutil.WriteFile("./reid-feat-byte.txt", buf, 0644)
+
+			for {
+				err = c.Send(buf)
+				if err == nil {
+					break
+				}
+				s.fnLogger("REID~~~~~~Send HumanTrack error: ", err)
+				time.Sleep(5 * time.Millisecond)
+				continue
+			}
+
 		}
 
 	}
@@ -122,9 +163,5 @@
 
 	l := len(src) * 4
 	ptr := unsafe.Pointer(&src[0])
-	// It is important to keep in mind that the Go garbage collector
-	// will not interact with this data, and that if src if freed,
-	// the behavior of any Go code using the slice is nondeterministic.
-	// Reference: https://github.com/golang/go/wiki/cgo#turning-c-arrays-into-go-slices
 	return (*[1 << 26]byte)((*[1 << 26]byte)(ptr))[:l:l]
 }

--
Gitblit v1.8.0