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