stydb
2019-12-03 6d6e6d425c4fe63a487ff27be9341671b2c1dd93
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)
      }