package main import ( "flag" "fmt" "time" "track/gohumantrack" "gocv.io/x/gocv" ) var ( url1 string url2 string ) func init() { flag.StringVar(&url1, "cam1", "", "url") flag.StringVar(&url2, "cam2", "", "url") } func main() { 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 } img1 := gocv.NewMat() defer img1.Close() img2 := gocv.NewMat() defer img2.Close() tracker := gohumantrack.NewHumanTracker(0, 2, 0) 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 } var images []gohumantrack.ImageHumanTracker img := gohumantrack.ImageHumanTracker{ Data: img1.ToBytes(), Width: img1.Cols, Height: img1.Rows, Channel: img1.Channels, } 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() }