| | |
| | | ) |
| | | |
| | | func GetFaceFeaFromSdk(fileBytes []byte,deadTime time.Duration) ([]*protomsg.ResultFaceDetect,error,*protomsg.Image){ |
| | | tStart :=time.Now() |
| | | s := NewFaceSdkService(fileBytes, deadTime) |
| | | i, err := s.ReadFromUploadImg() |
| | | logger.Debug("ReadFromUploadImg用时:", time.Since(tStart)) |
| | | if err !=nil{ |
| | | logger.Debug("readFromUploadImg err:",err) |
| | | return nil,err,i |
| | | } |
| | | tStart = time.Now() |
| | | bc, err := ImgCompress(i) |
| | | logger.Debug("ImgCompress用时:", time.Since(tStart)) |
| | | if err !=nil { |
| | | logger.Debug("ImgCompress err:",err) |
| | | return nil,err,i |
| | | } |
| | | s.PushImgMsg(bc) |
| | | t1 := time.Now() |
| | | s.GetFaceFea() |
| | | logger.Debug("GetFaceFea用时:", time.Since(t1)) |
| | | if s.Result == nil{ |
| | | return nil,errors.New("no fea"),i |
| | | } else { |
| | |
| | | } |
| | | |
| | | func (s *FaceSdkService) ReadFromUploadImg() (*protomsg.Image,error){ |
| | | //defer (*(s.File)).Close() |
| | | //imgB, err := ioutil.ReadAll(*(s.File)) |
| | | //if err !=nil{ |
| | | // logger.Debug("File.Read err:",err) |
| | | // return nil,err |
| | | //} |
| | | |
| | | picMat, err := gocv.IMDecode(s.File, gocv.IMReadColor) |
| | | if err !=nil { |
| | | logger.Debug("gocv.IMDecode err:",err) |
| | |
| | | } |
| | | |
| | | defer picMat.Close() |
| | | defer newMat.Close() |
| | | |
| | | if picMat.Empty() { |
| | | logger.Debug("file not exist") |
| | | return nil,errors.New("picMat is empty") |
| | |
| | | } |
| | | |
| | | func ImgCompress(i *protomsg.Image) ([]byte,error){ |
| | | t1 := time.Now() |
| | | if b, err := proto.Marshal(i); err != nil { |
| | | logger.Debug("protoImage marshal err") |
| | | return nil,err |
| | | } else { |
| | | logger.Debug("proto.Marshal用时:", time.Since(t1)) |
| | | t1 = time.Now() |
| | | bc := make([]byte, len(b)) |
| | | ht := make([]int, 64<<10) |
| | | n, err := lz4.CompressBlock(b, bc, ht) |
| | | logger.Debug("lz4.CompressBlock用时:", time.Since(t1)) |
| | | t1 = time.Now() |
| | | if err != nil { |
| | | logger.Debug(err) |
| | | return nil,err |
| | |
| | | return nil,errors.New("compressed len is 0") |
| | | } |
| | | bc = bc[:n] |
| | | logger.Debug("bc用时:", time.Since(t1)) |
| | | return bc,nil |
| | | } |
| | | } |