视频分析2.0 多进程拆分仓库
zhangmeng
2019-05-06 e4f567f656cc8b5e1e8f96722ca78d0a09333eb8
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
91
92
93
94
package demo
 
// import (
//     "analysis/valib/gosdk"
//     "fmt"
//     "image/color"
//     "os"
//     "time"
//     "videoServer/util/goffmpeg"
 
//     "gocv.io/x/gocv"
// )
 
// func imageFileName(pic string, i int) string {
//     imgFile := fmt.Sprintf("%s/%d.jpg", pic, i)
//     imgFile2 := fmt.Sprintf("%s/%d.jpeg", pic, i)
 
//     if _, err := os.Stat(imgFile); err != nil {
//         if _, err2 := os.Stat(imgFile2); err2 == nil {
//             imgFile = imgFile2
//         } else {
//             imgFile = ""
//         }
//     }
//     return imgFile
// }
 
// func runFaceSDK(data []byte, wid, hei int) ([]gosdk.CFacePos, []gosdk.CThftResult, [][]byte) {
//     var prop []gosdk.CThftResult
//     var feat [][]byte
 
//     img := gosdk.SDKImage{Data: data, Width: wid, Height: hei}
//     faces := gosdk.FaceDetect(img, 0)
//     for k, v := range faces {
//         p := gosdk.FaceProperty(v, img, 1)
//         prop = append(prop, p)
//         fmt.Printf("face no %d, facepos %+v, property %+v\n", k, v, prop)
//         f := gosdk.FaceExtract(v, img, 2)
//         feat = append(feat, f)
//         fmt.Printf("face extract feature data addr %p\n", feat)
//     }
 
//     return faces, prop, feat
// }
 
// // Face demo
// func Face(pic string) {
//     gf := goffmpeg.New()
 
//     gosdk.InitFaceDetector(16, 0, 30, 60)
//     gosdk.InitFaceProperty(10)
//     gosdk.InitFaceExtractor(10, 0)
 
//     window := gocv.NewWindow("Face")
//     clr := color.RGBA{0, 255, 255, 0}
 
//     for {
//         for i := 0; i < 500; i++ {
 
//             imgFile := imageFileName(pic, i)
//             if imgFile == "" {
//                 continue
//             }
 
//             data, wid, hei := gf.DecodeJPEG(imgFile)
//             if wid <= 0 || hei <= 0 {
//                 fmt.Println("decode jpg error")
//                 continue
//             }
 
//             faces, prop, feat := runFaceSDK(data, wid, hei)
//             count := len(faces)
//             for i := 0; i < count; i++ {
//                 fmt.Printf("face NO. %d, Pos %+v, Property %+v, Feature Address %p\n",
//                     i, faces[i], prop[i], feat[i])
//             }
//             // draw image
//             img, _ := gocv.NewMatFromBytes(hei, wid, gocv.MatTypeCV8UC3, data)
//             for _, f := range faces {
//                 rect := f.RcFace
//                 r := gosdk.Rect(rect)
//                 gocv.Rectangle(&img, r, clr, 3)
//             }
//             // show image
//             window.IMShow(img)
//             window.WaitKey(1)
 
//             time.Sleep(time.Duration(1000) * time.Millisecond)
//         }
//     }
//     gf.Free()
//     gosdk.Free()
 
// }