zhangmeng
2019-11-29 c9810a63191b9f4dff1c9d02a9545785fddd85e2
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()
}