public async Task <JsonResponse> MatchAsync(float[] feat) { if (feat.Length != ServiceOption.FeatureLength) { return(JsonResponse.ArgExceedLimit()); } var bSearch = await Task.FromResult(Search(feat, out var searchResult)); if (!bSearch) { return(JsonResponse.MatchError()); } var dis = searchResult.Select(item => item.Dis); var faceInfos = searchResult.Select(item => m_faceInfo.Get(item.Index)); var ids = faceInfos.Select(item => item.Id); var imagePaths = faceInfos .Select(item => item.ImagePath) .Select(imagePath => $"http://{ServiceOption.PublicIP}/api/FaceRecognition/getImageFile/{Path.GetFileName(imagePath)}"); return(new JsonResponse { Code = 0, Msg = "Success", Data = new { Ids = ids.ToArray(), Dis = dis.ToArray(), ImageUrls = imagePaths.ToArray() } }); }
public async Task <JsonResponse> AddAsync(IFormFile file) { if (file == null) { return(JsonResponse.ArgExceedLimit()); } var fileData = await IOHelper.GetFileDataAsync(file); if (fileData.Length <= 0) { return(JsonResponse.ArgExceedLimit()); } var feat = FaceEncoding(fileData); if (feat == null) { return(JsonResponse.FaceEncodingError()); } var id = Guid.NewGuid().ToString(); var imagePath = await SaveImageFileAsync(ServiceOption.ImageSavePath, id, file.FileName, fileData); return(await AddIndexAsync(feat, id, imagePath)); }
public async Task <JsonResponse> MatchAsync(IFormFile file) { if (file == null) { return(JsonResponse.ArgExceedLimit()); } var fileData = await IOHelper.GetFileDataAsync(file); if (fileData.Length <= 0) { return(JsonResponse.ArgExceedLimit()); } var feat = FaceEncoding(fileData); if (feat == null) { return(JsonResponse.FaceEncodingError()); } return(await MatchAsync(feat)); }