1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
| 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()
| }
|
|