From 29dfebcebf17690e4f5c72192f2bb4547ef51eea Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期六, 06 七月 2019 14:03:22 +0800 Subject: [PATCH] test cut face --- controllers/fileController.go | 118 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 60 insertions(+), 58 deletions(-) diff --git a/controllers/fileController.go b/controllers/fileController.go index c21b53f..868bd7a 100644 --- a/controllers/fileController.go +++ b/controllers/fileController.go @@ -103,14 +103,31 @@ //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� fileBytes, _ := ioutil.ReadAll(file) - faceExtArr, err := getFaceFeaFromSdk(fileBytes) + faceExtArr, err, pI := getFaceFeaFromSdk(fileBytes) if err ==nil && len(faceExtArr) >0 { var faceBase64= "" + var field = "" + var rcFace *protomsg.Rect for _,r := range faceExtArr { + rcFace = r.Pos.Pos.RcFace faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//鑾峰彇鎻愬彇鍒扮殑绗竴寮犱汉鑴哥壒寰� break } - util.ResponseFormat(c,code.Success,faceBase64) + //鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘 + cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom)) + fileInfo, e := esutil.PostFormData(weedfsUri, "娴嬭瘯浜鸿劯鍒囧浘", "file", cutFaceImgData) + if e != nil { + fmt.Println(e.Error()) + + } else { + field = fileInfo[picUrlField].(string) // 鏂囦欢璺緞 + } + if strings.Contains(field,"/"){ + idx := strings.Index(field, "/") + field = field[idx+1:] + } + fmt.Println("field:",field) + util.ResponseFormat(c,code.Success,field + ";" + faceBase64) } else { util.ResponseFormat(c,code.ComError,"鏈彁鍙栧埌浜鸿劯") } @@ -123,7 +140,6 @@ }*/ func uploadFileReturnAddr(file multipart.File, filename string, tableId string) (string, map[string]interface{}, error) { - defer file.Close() field := "" // weedfs 涓婁紶 @@ -131,83 +147,69 @@ if err !=nil { return "",nil,err } - fileInfo, e := esutil.PostFormData(weedfsUri, filename, "file", fileBytes) + + //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� + var faceBase64="" + faceExtArr, err,pI := getFaceFeaFromSdk(fileBytes) + if faceExtArr ==nil { + return "",nil,errors.New("NotFeatureFindError") + } + var rcFace *protomsg.Rect + if err ==nil && len(faceExtArr) >0 { + for _,r := range faceExtArr { + //鎷垮埌浜鸿劯鐨勫潗鏍� + rcFace = r.Pos.Pos.RcFace + + faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//鑾峰彇鎻愬彇鍒扮殑绗竴寮犱汉鑴哥壒寰� + break + } + } + //鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘 + cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom)) + fileInfo, e := esutil.PostFormData(weedfsUri, filename, "file", cutFaceImgData) if e != nil { fmt.Println(e.Error()) return "", nil, e } else { field = fileInfo[picUrlField].(string) // 鏂囦欢璺緞 } - - if field != "" { - // 杩斿洖鐗瑰緛鍊� fileInfo["point"] = v.RcFace fileInfo["feature"] = feat - - /*features := gorun.GetSimpleFaceDetect(picIp+field) // 鐗瑰緛鍊� // linux - if len(features) == 0 { // linux - return field,nil,errors.New("NotFeatureFindError") // linux - }else if len(features) > 1 { // linux - return field,nil,errors.New("TooManyFeatureFindError") // linux - } // linux - feat := features[0]["feature"].([]byte) // linux - if len(feat) != 2560 { // linux - return field,nil,errors.New("NotFeatureFindError") - - } */ // linux - if strings.Contains(field,"/"){ - idx := strings.Index(field, "/") - field = field[idx+1:] - } - fmt.Println("field:",field) - //imgB, _ := ioutil.ReadAll(file) - //fmt.Println("img.length:",len(imgB)) - - //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� - var faceBase64="" - faceExtArr, err := getFaceFeaFromSdk(fileBytes) - if faceExtArr ==nil { - return "",nil,errors.New("NotFeatureFindError") - } - if err ==nil && len(faceExtArr) >0 { - for _,r := range faceExtArr { - faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//鑾峰彇鎻愬彇鍒扮殑绗竴寮犱汉鑴哥壒寰� - break - } - } - - - dbperson := new(models.Dbtablepersons) - dbperson.PersonPicUrl = field // 鍥剧墖璺粡 - dbperson.TableId = tableId // - dbperson.PersonName = filename // 鍥剧墖鍚� - // 婕旂ずbase64缂栫爜 - - dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮� - - result := addDbPerson(dbperson) - return field, result, nil - } else { - return field, nil, nil + if strings.Contains(field,"/"){ + idx := strings.Index(field, "/") + field = field[idx+1:] } + fmt.Println("field:",field) + + dbperson := new(models.Dbtablepersons) + dbperson.PersonPicUrl = field // 鍥剧墖璺粡 + dbperson.TableId = tableId // + dbperson.PersonName = filename // 鍥剧墖鍚� + // 婕旂ずbase64缂栫爜 + + dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮� + + result := addDbPerson(dbperson) + return field, result, nil + } -func getFaceFeaFromSdk(fileBytes []byte) ([]*protomsg.ResultFaceExtCom,error){ +func getFaceFeaFromSdk(fileBytes []byte) ([]*protomsg.ResultFaceExtCom,error,*protomsg.Image){ s := service.NewFaceSdkService(fileBytes) i, err := s.ReadFromUploadImg() if err !=nil{ fmt.Println("readFromUploadImg err:",err) - return nil,err + return nil,err,i } bc, err := service.ImgCompress(i) if err !=nil { fmt.Println("ImgCompress err:",err) - return nil,err + return nil,err,i } s.PushImgMsg(bc) s.GetFaceFea() if s.Result == nil{ - return nil,errors.New("no fea") + return nil,errors.New("no fea"),i } else { - return s.Result,nil + return s.Result,nil,i } } -- Gitblit v1.8.0