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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
| package main
|
| import (
| "flag"
| "fmt"
| "time"
|
| "track/gohumantrack"
|
| "basic.com/valib/goffmpeg.git"
| )
|
| var (
| url1 string
| url2 string
| )
|
| func init() {
| flag.StringVar(&url1, "cam1", "", "url")
| flag.StringVar(&url2, "cam2", "", "url")
| }
| func main() {
| flag.Parse()
| fmt.Println("url1: ", url1, " url2: ", url2)
| if len(url1) == 0 || len(url2) == 0 {
| fmt.Println("url null")
| }
|
| goffmpeg.InitFFmpeg("./runtime/libcffmpeg.so")
|
| cam1 := goffmpeg.New(false, false)
| cam1.Run(url1)
| cam1.BuildDecoder()
| cam1.CloseStream()
|
| cam2 := goffmpeg.New(false, false)
| cam2.Run(url2)
| cam2.BuildDecoder()
| cam2.CloseStream()
|
| tracker := gohumantrack.NewHumanTracker(0, 2, 0)
| fmt.Println("version: ", tracker.GetVersion())
| 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)
| time.Sleep(38 * time.Millisecond)
| }
|
| }
| tracker.Free()
|
| goffmpeg.FreeFFmpeg()
| }
|
|