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() // }