public ApiResult <TrainFaceModel> TrainStudentFaceByImageUpload() { var r = new ApiResult <TrainFaceModel>(); TrainFaceModel trainFaceModel = new TrainFaceModel(); var httpRequest = System.Web.HttpContext.Current.Request; if (httpRequest.Files.Count < 1) { r.Messages.Add("Vui lòng upload ảnh"); } else if (httpRequest.Files.Count > 1) { r.Messages.Add("Vui lòng chỉ uplaod 1 ảnh duy nhât"); } else { HttpPostedFile file = httpRequest.Files[0]; byte[] thePictureAsBytes = new byte[file.ContentLength]; using (BinaryReader theReader = new BinaryReader(file.InputStream)) { thePictureAsBytes = theReader.ReadBytes(file.ContentLength); } trainFaceModel.StudentId = Int32.Parse(httpRequest.Files.AllKeys[0]); trainFaceModel.Base64Image = Convert.ToBase64String(thePictureAsBytes); r = RCSService.TrainStudentFace(trainFaceModel); } return(r); }
public ApiResult <TrainFaceModel> TrainStudentFace(TrainFaceModel model) { var ar = new ApiResult <TrainFaceModel>(); var student = RCSContext.Students.Where(s => s.Id == model.StudentId).FirstOrDefault(); if (student == null) { ar.IsSuccess = false; ar.Messages.Add("Sinh viên không tồn tại."); } else { var image = model.Base64Image.base64ToImage(); var bitmap = new Bitmap(image); var imageGray = model.Base64Image.base64ToImageGray(); imageGray._EqualizeHist(); var rectangles = DetectService.DetectFaceTrain(imageGray); if (rectangles.Count() <= 0) { ar.IsSuccess = false; ar.Messages.Add("Không nhận diện được khuôn mặt, vui lòng chọn nơi có ánh sáng đầy đủ và điều chỉnh hướng nhìn."); var data = new TrainFaceModel() { Base64Image = Convert.ToBase64String(bitmap.bitmapToByteArr()) }; ar.Data = data; } else if (rectangles.Count() == 1) { var trainImage = saveImageTraining(model.StudentId, model.Base64Image, rectangles[0]); var trainModels = new List <TrainModel>(); trainModels.Add(new TrainModel { StudentId = trainImage.StudentId, ImageId = trainImage.FileId, ImageGray = trainImage.FileAttachment.FileData.Data.byteArrToImageGray(), }); DetectService.AddTrainModels(trainModels); trainImage.FileAttachment.TrainingImages = null; trainImage.FileAttachment.FileData.FileAttachment = null; trainImage.Student = null; var data = new TrainFaceModel() { Base64Image = Convert.ToBase64String(drawFaceAndNoteOnBitmap(bitmap, rectangles[0], "", Color.Green).bitmapToByteArr()), StudentId = trainImage.StudentId, FileId = trainImage.FileId }; ar.Data = data; ar.IsSuccess = true; ar.Messages.Add("Training thành công."); } else { rectangles.ForEach(r => { bitmap = drawFaceAndNoteOnBitmap(bitmap, r, "", Color.Red); }); var data = new TrainFaceModel() { Base64Image = Convert.ToBase64String(bitmap.bitmapToByteArr()) }; ar.Data = data; ar.IsSuccess = false; ar.Messages.Add("Ảnh training chỉ được có một khuôn mặt."); } } return(ar); }
public ApiResult <TrainFaceModel> TrainStudentFace(TrainFaceModel model) { return(RCSService.TrainStudentFace(model)); }